需要在用户登录/认证后添加或更新声明。
我们使用下面的代码来添加自定义声明,它工作正常但是当我们重新加载页面时,以前添加的声明将不可用或从声明身份中删除。
public static async bool AddUserClaim(this ClaimsPrincipal principal, string name, string value)
{
bool isAdded = false;
var clm = new Claim(name, value);
ClaimsIdentity ci =(ClaimsIdentity)principal.Identity;
//REMOVE CLAIM IF EXIST
if (principal.HasClaim(c => c.Type == clm.Type))
{
ci.RemoveClaim(ci.Claims.FirstOrDefault(c => c.Type == clm.Type));
}
//ADD CLAIM WITH UPDATED VALUE
ci.AddClaim(clm);
return true;
}