2
我有一個使用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