none
使用 AspNet.Identity 进行身份验证,如何使用role功能? RRS feed

  • 问题

  • 如题,在vs2013rc中,使用了asp.net.identity来进行身份验证,可怎么使用role功能,新建的实例中,只有设计了登陆和注册,

    我自己试着创建角色,可没办法把用户添加到指定的角色中…

            Dim IdentityManager = New IdentityManager(New IdentityStore) ', result As IdentityResult
            Dim user As New User("Admin"), role = New Role("Administrator")
            IdentityManager.Users.CreateLocalUserAsync(user, "Admin888")
            Dim IdentityRoleManager As New IdentityRoleManager(New IdentityStore)
            IdentityRoleManager.CreateRoleAsync(role)
            IdentityRoleManager.AddUserToRoleAsync(user.Id, role.Id)

    整个块是运行正常的,可是在数据表中找不到数据


    MVC 深入研究 博客:http://www.cnblogs.com/DoduNet/
    MvcMovieStore 示例网站:MVC 影视 http://MvcMovie.cn/

    • 已编辑 Dodu.NET 2013年11月3日 19:27
    2013年9月15日 9:19

答案

  •  希望下面这些文章可以帮到你。

    One ASP.NET及完美的開發體驗 - ASP.NET MVC 5

    http://blogs.msdn.com/b/msdntaiwan/archive/2013/09/09/one-aspnet-development-aspnet-mvc-5.aspx

    Create an ASP.NET MVC 5 App with Facebook and Google OAuth2 and OpenID Sign-on (C#)

    http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

    代码:   

      async Task<bool> AddRoleAndUser()
    
            {
    
                AuthenticationIdentityManager IdentityManager = new AuthenticationIdentityManager(
    
                    new IdentityStore(new ApplicationDbContext()));
    
                var role = new Role("Role1");
    
                IdentityResult result = await IdentityManager.Roles.CreateRoleAsync(role, CancellationToken.None);
    
                if (result.Success == false)
    
                    return false;
    
                var user = new ApplicationUser() { UserName = "user1" };
    
                result = await IdentityManager.Users.CreateLocalUserAsync(user, "Password1");
    
                if (result.Success == false)
    
                    return false;
    
                result = await IdentityManager.Roles.AddUserToRoleAsync(user.Id, role.Id, CancellationToken.None);
    
                return result.Success;
    
            }
    


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 Dodu.NET 2013年9月25日 3:36
    2013年9月16日 7:42
    版主
  • 你好,

    你可以到 blogs.msdn.com/msdn.com 找到一些相关信息。

     1.AuthenticationIdentityManager 是 IdentityManager 的继承,但是有对一些方法进了行扩展,所以用IdentityManager 有的构造方法无法使用。

    2.在当前的应用程序的实体对象中创建一个验证机制。可以使用刚类 IdentityStore对象对用户进行相关验证操作及建立相应的权限。

    3. Asp.Net.Identity 时默认是你的Dbcontext的默认连接字符串ConnectionString.你可以使用new Dbcontext ("连接数据库字符串")动态创建一个数据库。

    • 已标记为答案 Dodu.NET 2013年9月25日 3:35
    2013年9月23日 1:38

全部回复

  •  希望下面这些文章可以帮到你。

    One ASP.NET及完美的開發體驗 - ASP.NET MVC 5

    http://blogs.msdn.com/b/msdntaiwan/archive/2013/09/09/one-aspnet-development-aspnet-mvc-5.aspx

    Create an ASP.NET MVC 5 App with Facebook and Google OAuth2 and OpenID Sign-on (C#)

    http://www.asp.net/mvc/tutorials/mvc-5/create-an-aspnet-mvc-5-app-with-facebook-and-google-oauth2-and-openid-sign-on

    代码:   

      async Task<bool> AddRoleAndUser()
    
            {
    
                AuthenticationIdentityManager IdentityManager = new AuthenticationIdentityManager(
    
                    new IdentityStore(new ApplicationDbContext()));
    
                var role = new Role("Role1");
    
                IdentityResult result = await IdentityManager.Roles.CreateRoleAsync(role, CancellationToken.None);
    
                if (result.Success == false)
    
                    return false;
    
                var user = new ApplicationUser() { UserName = "user1" };
    
                result = await IdentityManager.Users.CreateLocalUserAsync(user, "Password1");
    
                if (result.Success == false)
    
                    return false;
    
                result = await IdentityManager.Roles.AddUserToRoleAsync(user.Id, role.Id, CancellationToken.None);
    
                return result.Success;
    
            }
    


    <THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED>
    Thanks
    MSDN Community Support

    Please remember to "Mark as Answer" the responses that resolved your issue. It is a common way to recognize those who have helped you, and makes it easier for other visitors to find the resolution later.

    • 已标记为答案 Dodu.NET 2013年9月25日 3:36
    2013年9月16日 7:42
    版主
  • 非常感谢,不过有点不明白的是:

    1. AuthenticationIdentityManager 是 IdentityManager 的继承,而用 IdentityManager 的时候好像不行啊?
    2. new IdentityStore(new ApplicationDbContext()) 的时候,这个参数的意思是什么?作用是什么?
    3. 使用 Asp.Net.Identity 时,能否让生成的数据表在指定的数据库名下的数据库内创建(我测试了好多遍,在结合其他 Dbcontext 使用时,好像只能生成到 DefaultConnection数据库下)。

    MVC 深入研究 博客:http://www.cnblogs.com/DoduNet/
    MvcMovieStore 示例网站:MVC 影视 http://MvcMovie.cn/



    • 已编辑 Dodu.NET 2013年11月3日 19:27
    2013年9月16日 9:23
  • 你好,

    你可以到 blogs.msdn.com/msdn.com 找到一些相关信息。

     1.AuthenticationIdentityManager 是 IdentityManager 的继承,但是有对一些方法进了行扩展,所以用IdentityManager 有的构造方法无法使用。

    2.在当前的应用程序的实体对象中创建一个验证机制。可以使用刚类 IdentityStore对象对用户进行相关验证操作及建立相应的权限。

    3. Asp.Net.Identity 时默认是你的Dbcontext的默认连接字符串ConnectionString.你可以使用new Dbcontext ("连接数据库字符串")动态创建一个数据库。

    • 已标记为答案 Dodu.NET 2013年9月25日 3:35
    2013年9月23日 1:38
  • 你好,怎么获取用户指定用户名的用户信息呢?

    MVC 深入研究 博客:http://www.cnblogs.com/DoduNet/
    MvcMovieStore 示例网站:MVC 影视 http://MvcMovie.cn/



    • 已编辑 Dodu.NET 2013年11月3日 19:27
    2013年9月25日 3:36
  • 你好,我还有个疑问,就是在用户管理中,我想把某个用户添加到某个角色中,现在通过 FindRoleByNameAsync 这个方法使用 role name 来获取 roleid,用于 AddUserToRoleAsync 的参数值,可每次使用 FindRoleByNameAsync 的时候,就会出错,用户添加到数据库了,而在数据表AspNetUserRoles中没有登记用户对应的role。这是怎么回事呢?

    MVC 深入研究 博客:http://www.cnblogs.com/DoduNet/
    MvcMovieStore 示例网站:MVC 影视 http://MvcMovie.cn/


    • 已编辑 Dodu.NET 2013年11月3日 19:28
    2013年9月26日 5:00