ASP.NET身份数据库第一个自定义用户和角色

ttts862

我们正在尝试使用OWIN和.Net Identity实施Web API项目以进行身份​​验证。我们有针对用户和角色的自定义数据库表,因此我们需要采用数据库优先的方法进行EF。

我已经设法使身份与我们的自定义帐户表一起使用(由于其他stackoverflow线程),但是我一直坚持让角色起作用...

总之,到目前为止,我已经完成了使用以下功能实现的自定义IUserStore

public class IdentityUserStore<TUser> : 
    IUserStore<TUser>, where TUser : IdentityUser
{

    ....

    public Task<TUser> FindByNameAsync(string userName)
    {
        //throw new NotImplementedException();
        IdentityUser user = null;

        Account result = _accountRepo.GetByEmail(userName);

        if (result != null)
        {
            user = new IdentityUser()
            {
                Id = result.Code,
                UserName = result.Email,
                SecurityStamp = result.SecurityStamp,
                PasswordHash = result.PasswordHash,
            };
        }

        return Task.FromResult<TUser>(user as TUser);
    }

    ....
}

**请注意,帐户实体没有继承IUser,因此我必须手动映射IdentityUser所需的最少数据。

然后如下重写GrantResourceOwnerCredentials函数

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{

        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        UserManager<IdentityUser> _userManager = new UserManager<IdentityUser>(new IdentityUserStore<IdentityUser>());
        IdentityUser user = await _userManager.FindAsync(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user"));

        context.Validated(identity);

}

通过上面的操作,[Authorize]属性有效,但是由于角色信息不可用,所以我们无法获得[Authorize(Roles =“ XXX”)]。

谁能帮助我指出从自定义数据库表中检索用户角色的正确方向,以便它与.Net Identity框架一起使用?

谢谢!

斯蒂芬·雷德尔

上面的代码的问题在于,您添加了一个角色类型(至少对于系统而言)未知的角色。对于角色,预定义的声明类型为http://schemas.microsoft.com/ws/2008/06/identity/claims/roleSystem.Security.Claims.ClaimTypes.Role因此,请将您的代码更改为

identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim(ClaimTypes.Role, "user"));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Asp.Net身份数据库的第一种方法

来自分类Dev

ASP.NET MVC 5 自定义 RoleProvider 无法从数据库中检索用户名的角色

来自分类Dev

ASP.NET身份数据库种子

来自分类Dev

ASP.NET MVC身份数据库

来自分类Dev

Asp.Net身份-自定义数据库访问UserManager

来自分类Dev

如何使用 ASP.NET Core identity v preview 3.0 创建自定义用户和角色?

来自分类常见问题

C#asp.net身份和自定义角色

来自分类Dev

C#asp.net身份和自定义角色

来自分类Dev

具有自定义角色的asp.net身份

来自分类Dev

自定义asp.net身份角色声明

来自分类Dev

如何将ASP.NET身份数据库与自己的数据库连接?

来自分类Dev

多站点中的ASP.NET身份用户和角色

来自分类Dev

自定义经典ASP 404页面,读取querystring的第一个变量时出错

来自分类Dev

ASP.NET MVC 4-自定义成员资格和角色实体未更新

来自分类Dev

Asp.Net代码第一个角色提供程序停止工作

来自分类Dev

ASP.NET Core RC2身份数据库架构迁移

来自分类Dev

ASP.NET身份:让所有用户都扮演一个角色

来自分类Dev

使用自定义身份用户(ASP.NET 5.2EF 6和身份2)时,用户角色表上的额外列

来自分类Dev

ASP.NET MVC + API和WCF具有针对自定义数据库和活动目录的基于声明的授权和身份验证

来自分类Dev

ASP.NET(MVC)用户,角色和角色中的用户

来自分类Dev

ASP.NET(MVC)用户,角色和角色中的用户

来自分类Dev

ASP.NET身份-未调用自定义角色验证

来自分类Dev

Windows身份验证的ASP.NET 5自定义角色

来自分类Dev

ASP.NET身份-未调用自定义角色验证

来自分类Dev

具有ASP.Net Identity的ASP.NET MVC5中的自定义验证和角色提供程序

来自分类Dev

基于ASP.NET MVC中角色的自定义用户授权

来自分类Dev

ASP.NET MVC 5基于用户角色自定义Bootstrap导航栏

来自分类Dev

在ASP.NET MVC和Azure AD中创建自定义用户角色

来自分类Dev

一个区域下的Asp.Net MVC 5自定义动作路由

Related 相关文章

  1. 1

    使用Asp.Net身份数据库的第一种方法

  2. 2

    ASP.NET MVC 5 自定义 RoleProvider 无法从数据库中检索用户名的角色

  3. 3

    ASP.NET身份数据库种子

  4. 4

    ASP.NET MVC身份数据库

  5. 5

    Asp.Net身份-自定义数据库访问UserManager

  6. 6

    如何使用 ASP.NET Core identity v preview 3.0 创建自定义用户和角色?

  7. 7

    C#asp.net身份和自定义角色

  8. 8

    C#asp.net身份和自定义角色

  9. 9

    具有自定义角色的asp.net身份

  10. 10

    自定义asp.net身份角色声明

  11. 11

    如何将ASP.NET身份数据库与自己的数据库连接?

  12. 12

    多站点中的ASP.NET身份用户和角色

  13. 13

    自定义经典ASP 404页面,读取querystring的第一个变量时出错

  14. 14

    ASP.NET MVC 4-自定义成员资格和角色实体未更新

  15. 15

    Asp.Net代码第一个角色提供程序停止工作

  16. 16

    ASP.NET Core RC2身份数据库架构迁移

  17. 17

    ASP.NET身份:让所有用户都扮演一个角色

  18. 18

    使用自定义身份用户(ASP.NET 5.2EF 6和身份2)时,用户角色表上的额外列

  19. 19

    ASP.NET MVC + API和WCF具有针对自定义数据库和活动目录的基于声明的授权和身份验证

  20. 20

    ASP.NET(MVC)用户,角色和角色中的用户

  21. 21

    ASP.NET(MVC)用户,角色和角色中的用户

  22. 22

    ASP.NET身份-未调用自定义角色验证

  23. 23

    Windows身份验证的ASP.NET 5自定义角色

  24. 24

    ASP.NET身份-未调用自定义角色验证

  25. 25

    具有ASP.Net Identity的ASP.NET MVC5中的自定义验证和角色提供程序

  26. 26

    基于ASP.NET MVC中角色的自定义用户授权

  27. 27

    ASP.NET MVC 5基于用户角色自定义Bootstrap导航栏

  28. 28

    在ASP.NET MVC和Azure AD中创建自定义用户角色

  29. 29

    一个区域下的Asp.Net MVC 5自定义动作路由

热门标签

归档