我的项目在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上。
我欢迎在我的项目中获得角色授权的问题、评论和解决方案。
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");发布于 2022-05-24 10:34:47
有太多太聪明的变体了。
试试这位官方医生。
侧写服务一号。
在服务器项目下创建ProfileService.cs。
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;
}
}https://stackoverflow.com/questions/70794499
复制相似问题