簡體   English   中英

使用 Asp.Net Core Identity 添加持久聲明

[英]Add persistent claim with Asp.Net Core Identity

我已經建立了基於身份的自定義授權模塊。 來自 db 的權限使用 UserClaimsPrincipalFactory 加載到聲明中,這很好用,但僅在登錄時發生。

授予新權限時,我認為我有兩個選擇:

  1. 將聲明添加到當前 ClaimsIdentity
  2. 通過重新創建身份刷新所有聲明

問題是當我嘗試使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM