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 次 |
| 最近记录: |