gpt4 book ai didi

asp.net-core - 在 ASP.NET Core SPA 模板的身份核心 token 响应中添加角色

转载 作者:行者123 更新时间:2023-12-04 07:56:05 27 4
gpt4 key购买 nike

所以我正在使用 具有内置授权的 ASP.NET Core React 模板 .在该模板中,一切正常,我可以通过此登录和注册帐户

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

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

services.AddAuthentication()
.AddIdentityServerJwt();
当我通过应用程序本地存储查看 token 时,我得到以下数据。没有角色。
enter image description here
我还通过 jwt.io 查看了访问 token
我的问题是,如何在 jwt token 中添加角色或角色?
谢谢!

最佳答案

您需要创建一个 ProfileService实现 IProfileService界面
我与您分享我项目中的代码

public class ProfileService : IProfileService
{
protected 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);

var claims = new List<Claim> {
// here you can include other properties such as id, email, address, etc. as part of the jwt claim types
new Claim(JwtClaimTypes.Email, user.Email),
new Claim(JwtClaimTypes.Name, $"{user.Firstname} {user.Lastname}")
};
foreach (string role in roles)
{
// include the roles
claims.Add(new Claim(JwtClaimTypes.Role, role));
}

context.IssuedClaims.AddRange(claims);
}

public Task IsActiveAsync(IsActiveContext context)
{
return Task.CompletedTask;
}
}
将 DI 注册添加到 创业
services.AddTransient<IProfileService, ProfileService>();
IdentityServer4 中的详细信息 documentation

关于asp.net-core - 在 ASP.NET Core SPA 模板的身份核心 token 响应中添加角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66695100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com