How to use Roles in user identity in MVC 5

二次信任 提交于 2019-12-03 00:16:09
Bellash

When you write

 !Roles.RoleExists("Member") 

you are not using ASP.NET Identity! instead, you should use ApplicationRole so it extends the IdentityRole class

In addition, you don't need to tell the AspNetSqlRoleProvider in your config file. Asp.Net Identity is something different. In Asp.Net Identity there is a class named ApplicationRoleManager in the App_Start folder.

You should not use Asp.Net Identity as if it was the old simple membership.

Alternatively, check the beta(which means things may change) version of Identity to learn more on how to do in Identity.

Here is how to start :

  • Create a new project : Choose Empty template (Not MVC not WebForm)
  • Install the Asp.Net identity sample via nuget

    PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre
    
  • edit namespace to match your old project namespace
  • If you want to copy some folders from your old project to the new project, copy your (Controllers, Views,... ) not the config files.

Here you can create roles as follows:

            var role = new IdentityRole("roleName");
            var roleresult = await RoleManager.CreateAsync(role);

and to create and add a user to specific roles you will use this

           var user = new ApplicationUser
            {
                UserName = "tresorunikin",
                Email = "tresorunikin@bellashada.com",
                EmailConfirmed =true
            };

            var userResult = await UserManager.CreateAsync(user, "123@Strong.Password");
            if(userResult.Succeeded){
            string[] roles =new string[]{"admin","seller","other"};
           var roleResult = await UserManager.AddToRolesAsync(user.Id, roles);
            if(roleResult.Succeeded){
                //Here, user has been added to roles
             }
           }

All these are done for you by Pranav Rastogi, one of the Identity team at Microsoft.

Note that with these samples you target a new (beta) version of System.Web.Mvc that is newer than System.Web.Mvc 5.0.0.0 If I remember well the beta version is System.Web.MVC 5.0.1.2 or something like that

To Learn More about Identity click here

UPDATES The Version in the samples is: System.Web.Mvc 5.2.1.0

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!