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:
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.
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
if(username=="admin")
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">
<providers>
<clear />
<add name="Custom_RoleMembership"
type="CustomMembershipP.Models.Custom_RoleMembership" />
</providers>
</roleManager>
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.