[英]Add persistent claim with Asp.Net Core Identity
我已經建立了基於身份的自定義授權模塊。 來自 db 的權限使用 UserClaimsPrincipalFactory 加載到聲明中,這很好用,但僅在登錄時發生。
授予新權限時,我認為我有兩個選擇:
問題是當我嘗試使用user.Identity.AddClaim()
添加聲明時,重新加載頁面時它不會持續存在。 而且我找不到如何重新加載 ClaimsIdentity 的信息。
我不確定項目何時需要添加外部聲明。 身份是基於cookie的,每個請求都會攜帶cookie,因此身份可以將cookie解析為聲明。 如果要重新加載 ClaimsIdentity,則需要重用SignInAsync
方法重新生成 cookie。 但是有一個全局方法IClaimsTransformation
可以幫助您根據不同的情況添加臨時聲明。
public class Tanstromer : IClaimsTransformation
{
public Task<ClaimsPrincipal> TransformAsync(ClaimsPrincipal principal)
{
var claims = new List<Claim> { };
var identity = principal.Identity as ClaimsIdentity;
identity.AddClaim(new Claim("",""));
//you can add some justification here
var userPrinicpal = new ClaimsPrincipal(identity);
return Task.FromResult(principal);
}
}
在 ConfigureService 中添加
services.AddScoped<IClaimsTransformation, Tanstromer>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.