Этот шаблон использует ASP. NET Core Identity для управления пользователями / ролями. Итак, в первую очередь нужно включить роли:
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();
Создание пользовательской службы Profile для включения пользовательских утверждений в конечную точку токенов и 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, ваше приложение реакции автоматически запросит конечную точку userinfo, чтобы получить профиль пользователя в функции getUser
файла AuthorizeService.js
, отследите _user.profile
, чтобы получить новый претензии Кроме того, утверждения о ролях включены в маркер доступа.