ASP.Net 코어에서 IClaimsTransformer 구현을 사용할 수 있습니다.IClaimsTransformer의 용도는 무엇입니까?
는이처럼 등록 :
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
}
}
}
그러나 ClaimsIdentity.Claims
이 전용 속성 읽기
app.UseClaimsTransformation(o => o.Transformer = new MyClaimsTransformer());
구현. 또한 Claim.Type
, Claim.Value
은 읽기 전용 속성입니다.
즉, IClaimsTransformer
구현시 새로운 소유권 주장 만 추가 할 수 있습니다. 기존 소유권 주장은 삭제하거나 수정할 수 없습니다.
그래서 IClaimsTransformer의 실제 용도는 무엇입니까?
세션에 데이터를 저장하는 경우 HttpContext에서 세션을 사용할 수 있으므로 세션에서 직접 데이터를 읽을 수 있습니다. 왜 나는 클레임에 넣고 클레임에서 읽어야합니까? – LP13
클레임은 다양한 목적으로 사용될 수 있습니다. 한 가지 공통적 인 사용은 권한 policy에 대한 요구 사항을 만족시키는 데 있습니다. 대부분의 경우 claimstranformation이 필요하지 않습니다. 왜냐하면 대부분의 경우 많은 클레임이나 큰 클레임 페이로드를 피할 수 있기 때문입니다.하지만 필요한 경우에는 거기에 있습니다. 당신은 그것을 필요로하지 않을지도 모르지만, 아마도 주로 엣지 케이스의 용도가있을 것입니다. –
@blowdart는 내 것보다 더 나은 대답을 가지고 있습니다. –