首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Blazor WASM .NET-6角色身份验证不适合我

Blazor WASM .NET-6角色身份验证不适合我
EN

Stack Overflow用户
提问于 2022-01-20 23:05:37
回答 1查看 368关注 0票数 2

我的项目在VS-2022中,使用下面的标签。

请有人解释一下下面的代码片段引用在服务器program.cs文件中的含义?这个片段打算做什么?

具体来说,“名称”和“角色”指的是什么?我已经在AspNetRoles表以及AspNetRoleClaims和AspNetUserClaims中创建了四个角色。但是,以下Blazor页面条件不起作用:@attribute [Authorize(Roles = "Owner,Admin,Lead,User")]

我在一个建议中发现了下面的代码段,我需要这段代码来获得角色授权工作。

使用时,我在包含:options.ApiResources.Single().UserClaims.Add("name");的行中得到一个运行时错误“序列不包含任何元素”。

由于阅读了program.cs Core3.1和.NET 5在线教程,我不知道startup.cs文件部分需要什么,以便将我的项目导入托管的.NET 6和WASM。与过去两年相比,情况发生了很大变化,特别是在Blazor和.NET 6上。

我欢迎在我的项目中获得角色授权的问题、评论和解决方案。

代码语言:javascript
复制
builder.Services.AddIdentityServer()
        .AddApiAuthorization<ApplicationUser, ApplicationDbContext>(options => {
           options.IdentityResources["openid"].UserClaims.Add("name");
           options.ApiResources.Single().UserClaims.Add("name");
           options.IdentityResources["openid"].UserClaims.Add("role");
           options.ApiResources.Single().UserClaims.Add("role");
        });

JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("role");
EN

回答 1

Stack Overflow用户

发布于 2022-05-24 10:34:47

有太多太聪明的变体了。

试试这位官方医生。

使用API授权的名称和角色声明

侧写服务一号。

在服务器项目下创建ProfileService.cs。

代码语言:javascript
复制
using IdentityModel;
using Duende.IdentityServer.Models;
using Duende.IdentityServer.Services;
using System.Threading.Tasks;

public class ProfileService : IProfileService
{
    public ProfileService()
    {
    }

    public async Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        var nameClaim = context.Subject.FindAll(JwtClaimTypes.Name);
        context.IssuedClaims.AddRange(nameClaim);

        var roleClaims = context.Subject.FindAll(JwtClaimTypes.Role);
        context.IssuedClaims.AddRange(roleClaims);

        await Task.CompletedTask;
    }

    public async Task IsActiveAsync(IsActiveContext context)
    {
        await Task.CompletedTask;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70794499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档