编程语言
首页 > 编程语言> > c# – IClaimsTransformer有什么用?

c# – IClaimsTransformer有什么用?

作者:互联网

在ASP.Net核心中,您可以使用IClaimsTransformer的实现.

你这样注册:

app.UseClaimsTransformation(o => o.Transformer = new MyClaimsTransformer());

履行

public class MyClaimsTransformer : IClaimsTransformer
{
    public Task<ClaimsPrincipal> TransformAsync(ClaimsTransformationContext context)
    {
        var identity = context.Principal.Identity as ClaimsIdentity;

        foreach (var claim in ci.Claims)
        {
           // you cannot modify claim.Type or claim.Value here
        }
    }
}

但ClaimIdentity.Claims是只读属性. Claim.Type,Claim.Value也是只读属性.

这意味着在IClaimsTransformer的实现中,您只能添加新的声明.您无法删除或修改现有声明.

那么IClaimsTransformer的真实用途是什么?

解决方法:

你注意到了返回类型吗?这是ClaimsPrincipal.

您可以构建一个全新的ClaimsPrincipal,在现有的中添加或更改您喜欢的任何内容并将其返回.

标签:c,asp-net-core,asp-net-core-mvc,coreclr
来源: https://codeday.me/bug/20190611/1218625.html