identityserver4+aspnet core Identity+role实战总结

  1. 参考IdentityServer4实战 - 基于角色的权限控制及Claim详解
  2. 博主解决了基于TestUser的role claim issue问题,但由于我使用了Aspnet core的Identity,发现按照晓晨Master的做法没能实现在WebAPI端的Role验证功能
[Authorize]
public class IdentityController : ControllerBase
{
    [HttpGet]
    public IActionResult Get()
    {
        return new JsonResult(from c in User.Claims select new { c.Type, c.Value });
    }
}

这时是获取不到role claim的。
3. 跟claim颁发有关的流程可以看我归纳出的图
4. 话不怎么会说,直接代码吧

```
services.AddDbContext(options =>
    options.UseMySql(
        Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity()


    //添加下面两行代码
    .AddRoles()
    .AddClaimsPrincipalFactory>()


    .AddEntityFrameworkStores();
```

这两行代码都是IdentityBuilder的成员方法

```
public virtual IdentityBuilder AddRoles() where TRole : class
{
    RoleType = typeof(TRole);
    AddRoleValidator>();
    Services.TryAddScoped, RoleManager>();
    return this;
}
```
```
public virtual IdentityBuilder AddClaimsPrincipalFactory() where TFactory : class
{
    return AddScoped(typeof(IUserClaimsPrincipalFactory<>).MakeGenericType(UserType), typeof(TFactory));
}
```

5. 写这个主要是为了给自己提个醒,有什么不理解的可以直接邮箱我

你可能感兴趣的:(aspnet,core,IdentityServer4)