5

나는 종속성 때문에 등 ClaimsIdentity을 가진 클래스가 있습니다는 ASP.NET 코어 의존성 주입 내부에서 ClaimsPrincipal 또는 ClaimsIdentity 얻기

이 이 는
이 이

공공 ClaimsIdentityDecorator이 (ClaimsIdentity 정체성)

가정임을를 현재 사용자의 소유권 주장.

services.AddScoped(x=> 
{ 
    var context = x.GetService<IHttpContextAccessor>(); 
    return context.HttpContext.User.Identity as ClaimsIdentity; 
}); 

가 나는 사용자의 주장을 검사해야하고, ClaimsIdentity 또는 ClaimsPrincipal 또는 다른 신원 객체가 자동으로 나를 위해 주입 될 것으로 보인다 : 그래서 같은 IHttpContextAccessor 통해처럼 검색 할 수 있습니다. 그것을 HttpContext에서 가져 와서 직접 추가하는 것이 좋습니다. 그러나 이미 거기에있는 클래임을 가진 다른 객체 나 인터페이스가 있다면, 그 클래스를 종속성을 가지도록 디자인하고 싶습니다.

또한 스코프 수준에서 주입해야합니다.

+0

'IHttpContextAccessor'를 종속 클래스에 삽입하고 필요에 따라 사용자를 컨텍스트에서 추출하지 않는 이유는 무엇입니까? – Nkosi

+0

@ Nkosi 왜냐하면 나는 현재 사용자와 그의 주장을 원하기 때문이다. 전체 http 컨텍스트가 아닙니다. –

답변

3

제가 알고있는 ClaimsIdentity을 제공하는 방법은 없습니다.하지만 아마도 AddTransient을 원할 것입니다. 사용자가 로그 아웃했지만 요청이 시작될 때 인스턴스가 생성 된 경우 AddScoped은 변경 사항을 반영하지 않습니다.