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