通过SPA和.NET Core 3识别角色

费利佩·佩尼亚(FelipePeña)

我有一个使用.NET Core 3.1的应用程序,还有一个使用从此链接生成的默认React应用程序的前端

在.NET Core应用程序中,我具有用户和角色的Identity Server安装程序。

当我在React应用程序中时,我想了解用户的角色。我看到当前正在使用一个名为的库oidc-client

从授权用户时我可以调试的响应中,我看到返回了一些范围。

scope: "openid profile [Name of the app]"

这是完整的回复。

在此处输入图片说明

我如何知道该用户的角色?我是否需要将其添加到.NET Core应用程序中的某个位置?还是可以从access_token响应中找到答案?

Nan Yu

该模板使用ASP.NET Core Identity管理用户/角色。首先要启用角色:

services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
        .AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

创建自定义配置文件服务以将自定义声明包含到令牌和userinfo端点中:

public class ProfileService : IProfileService
{
    protected readonly UserManager<ApplicationUser> _userManager;


    public ProfileService(UserManager<ApplicationUser> userManager)
    {
        _userManager = userManager;
    }

    public async Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        ApplicationUser user = await _userManager.GetUserAsync(context.Subject);

        IList<string> roles = await _userManager.GetRolesAsync(user);

        IList<Claim> roleClaims = new List<Claim>();
        foreach (string role in roles)
        {
            roleClaims.Add(new Claim(JwtClaimTypes.Role, role));
        }

        //add user claims

        roleClaims.Add(new Claim(JwtClaimTypes.Name, user.UserName));
        context.IssuedClaims.AddRange(roleClaims);
    }

    public Task IsActiveAsync(IsActiveContext context)
    {
        return Task.CompletedTask;
    }
}

并在Startup.cs中注册:

services.AddIdentityServer()
        .AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
        .AddProfileService<ProfileService>(); 

现在,声明将包含在userinfo端点中,您的React应用程序将自动请求userinfo端点获取文件getUser功能中的用户个人资料AuthorizeService.js,并跟踪_user.profile以获得新的声明。同样,角色声明也包含在访问令牌中。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Aurelia Kendo Bridge 和 Aurelia .Net Core Spa 项目

来自分类Dev

ASP.NET Core 3-Angular SPA PWA

来自分类Dev

.NET Standard和.NET Core 3.x或ASP.NET Core 3.x

来自分类Dev

共享cookie .net Core 3和Asp.net

来自分类Dev

在.Net Core 3和blazor中捆绑CSS和js

来自分类Dev

如何使用Identity ASP.NET Core通过代码优先迁移为用户和角色播种

来自分类Dev

.Net Core 2.0 Angular SPA 路由

来自分类Dev

使用React SPA和Asp.net Core后端的IdentityServer4实现

来自分类Dev

使用 ASP.net core 2 Web API 和 SPA 进行隐式授权

来自分类Dev

Swagger和.Net Core 3集成

来自分类Dev

ASP.NET Core 3 ActionFilter和Viewbag

来自分类Dev

具有身份和ExternalLogin的ASP.NET Core 3.1中基于角色的授权

来自分类Dev

如何在ASP.NET Core中添加多个身份和多个角色

来自分类Dev

.NET Core 3 Azure AD身份验证的自定义角色

来自分类Dev

授权角色/策略属性在.Net Core 3中不起作用

来自分类Dev

使用UserManager .Net Core筛选角色角色上的用户

来自分类Dev

.NET Core和类型相等

来自分类Dev

.NET Core DI和子类

来自分类Dev

.NET Core和.NET Framework交互

来自分类Dev

SHA1(c#)-与.Net 3和.Net Core不同的结果

来自分类Dev

如何从C#.NET Core WebAPI控制器向SPA返回2个文档(PDF和XFDF)?

来自分类Dev

如何在Asp.Net Core Web Api和spa(Angular)中正确实现“ Google登录”?

来自分类Dev

在使用Http.sys和URLPrefix时,如何配置dotnet core 3来提供React SPA?

来自分类Dev

.NET Framework 4.6,.Net Native和.Net Core之间的区别

来自分类Dev

如何使用ASP.Net Core 3,SPA应用程序针对无效的api请求返回错误

来自分类Dev

.NET Core中可以通过用户名和签名进行身份验证的Microsoft.Web.Services3的替代品是什么?

来自分类Dev

.Net Core WebApi + Angular项目中的安全SPA

来自分类Dev

ASP.NET Core SPA Vue 模板与 Vue CLI

来自分类Dev

ASP.NET Core Web API和角色授权

Related 相关文章

  1. 1

    Aurelia Kendo Bridge 和 Aurelia .Net Core Spa 项目

  2. 2

    ASP.NET Core 3-Angular SPA PWA

  3. 3

    .NET Standard和.NET Core 3.x或ASP.NET Core 3.x

  4. 4

    共享cookie .net Core 3和Asp.net

  5. 5

    在.Net Core 3和blazor中捆绑CSS和js

  6. 6

    如何使用Identity ASP.NET Core通过代码优先迁移为用户和角色播种

  7. 7

    .Net Core 2.0 Angular SPA 路由

  8. 8

    使用React SPA和Asp.net Core后端的IdentityServer4实现

  9. 9

    使用 ASP.net core 2 Web API 和 SPA 进行隐式授权

  10. 10

    Swagger和.Net Core 3集成

  11. 11

    ASP.NET Core 3 ActionFilter和Viewbag

  12. 12

    具有身份和ExternalLogin的ASP.NET Core 3.1中基于角色的授权

  13. 13

    如何在ASP.NET Core中添加多个身份和多个角色

  14. 14

    .NET Core 3 Azure AD身份验证的自定义角色

  15. 15

    授权角色/策略属性在.Net Core 3中不起作用

  16. 16

    使用UserManager .Net Core筛选角色角色上的用户

  17. 17

    .NET Core和类型相等

  18. 18

    .NET Core DI和子类

  19. 19

    .NET Core和.NET Framework交互

  20. 20

    SHA1(c#)-与.Net 3和.Net Core不同的结果

  21. 21

    如何从C#.NET Core WebAPI控制器向SPA返回2个文档(PDF和XFDF)?

  22. 22

    如何在Asp.Net Core Web Api和spa(Angular)中正确实现“ Google登录”?

  23. 23

    在使用Http.sys和URLPrefix时,如何配置dotnet core 3来提供React SPA?

  24. 24

    .NET Framework 4.6,.Net Native和.Net Core之间的区别

  25. 25

    如何使用ASP.Net Core 3,SPA应用程序针对无效的api请求返回错误

  26. 26

    .NET Core中可以通过用户名和签名进行身份验证的Microsoft.Web.Services3的替代品是什么?

  27. 27

    .Net Core WebApi + Angular项目中的安全SPA

  28. 28

    ASP.NET Core SPA Vue 模板与 Vue CLI

  29. 29

    ASP.NET Core Web API和角色授权

热门标签

归档