How to Implement Custom Role Provider in Asp.Net MVC

July 20, 2014 , , , , 0 Comments

As I have discussed in earlier article that programmer need to implement custom provides to enable its own database works with in-built functionality. My previous article was to implement custom membership provider and in this article I will continue with custom role provider in MVC.

By following these simple steps we will complete the task:

  • Create a class "Custom_RoleMembership" in Models folder in your MVC application.
  • Inherit this from RoleProvider class exists in "System.Web.Security" namespace.
  • Right click on RoleProvider and select on “Implement Abstract Class”, it will all the override function need to be implement by us.
  • Just implement GetRolesForUser(string username) method and replace that function with the following code:

    public override string[] GetRolesForUser(string username)
    //Get roles for this username and return in string array
    return new string[] { "Admin" };
    return null;

  • Go to HomeController and place an attribute like below:

    [Authorize(Roles = "Admin")]
    public ActionResult Index()
    ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
    return View();
  • Open web.config file and place below code under system.web tag

    <roleManager defaultProvider="Custom_RoleMembership" enabled="true">
    <clear />
    <add name="Custom_RoleMembership"
    type="CustomMembershipP.Models.Custom_RoleMembership"  />

Now run the application and open Index page, it will redirect you on login view. Login with username = admin and password = password and debug this application, it will check the above method GetRolesForUser(). If there is a role for this user then it will go to index view otherwise return to login page.

In my case I have used only one username and return admin only from the method. But you can check the roles in your database and return them in string array. If there is a role “admin” in your array then only it will open index page.

Subhash Sharma

Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard. Google