У меня есть приложение, которое использует JwtBearerAuthentication
. Я пытаюсь добавить претензии к заявке User(ClaimsPrincipal)
в начале каждого запроса. Мне удалось сделать это с помощью ClaimsTransformationOptions
:Пользовательские претензии с аутентификацией на предъявителя Jwt
app.UseClaimsTransformation(new ClaimsTransformationOptions
{
Transformer = new ClaimsTransformer<TUser, TRole>()
});
и в моем TransformAsync
:
public async Task<ClaimsPrincipal> TransformAsync(ClaimsTransformationContext context)
{
var services = context.Context.RequestServices;
var userManager = services.GetRequiredService<UserManager<TUser>>();
var roleManager = services.GetRequiredService<RoleManager<TRole>>();
var userId = 1; // Get the UserId from my store, let say its 1 for now
if (userId != 0)
{
var user = await userManager.FindByIdAsync(userId);
var claimsPrincipal = await new UserClaimsPrincipalFactory<TUser, TRole>(userManager, roleManager, _optionsAccessor)
.CreateAsync(user);
context.Principal.AddIdentities(claimsPrincipal.Identities);
}
return context.Principal;
}
До сих пор так хорошо, и претензии, которые загружаются из базы данных и добавлены к context.Principal
. Моя проблема, когда я дойду до контроллера, личность перезаписывается !!
Спасибо, что поделились человеком! – Shimmy