LP1*_*P13 5 c# asp.net-core-mvc coreclr asp.net-core
在ASP.Net核心中,您可以使用IClaimsTransformer的实现.
你这样注册:
app.UseClaimsTransformation(o => o.Transformer = new MyClaimsTransformer());
Run Code Online (Sandbox Code Playgroud)
履行
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
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是ClaimsIdentity.Claims
是只读属性.此外Claim.Type
,Claim.Value
是readonly属性.
这意味着在实施中IClaimsTransformer
您只能添加新的声明.您无法删除或修改现有声明.
那么IClaimsTransformer的真实用途是什么?
你注意到了返回类型吗?这是ClaimsPrincipal.
您可以构建一个全新的ClaimsPrincipal,在现有的中添加或更改您喜欢的任何内容并将其返回.
它的价值在于您可以补充身份验证 cookie 中存储的内容之外的声明。
它很有用,因为 cookie 中只能容纳这么多数据,如果您尝试放入太多数据,它就会被截断。
因此,如果您有大量声明或具有较大负载的声明,您可以将该数据存储在会话中,并使用声明转换将其添加到 ClaimsPrincipal 中。我不认为它是为了删除存储在 cookie 中的声明。如果您想添加或控制 cookie 中的声明,您可以在自定义 IClaimsPrincipalFactory 中执行此操作。
归档时间: |
|
查看次数: |
2401 次 |
最近记录: |