2

인증 용 WebSecurity와 인증 용 맞춤 ClaimsAuthorizationManager을 사용하고 있습니다.ASP.NET MVC 4 영구 인증 쿠키 이벤트를 읽으시겠습니까?

인증에 대한 기본 제공 WebSecurity 기능과 청구 기반 인증을 혼합하면 나에게 많은 가치를 제공합니다. 필자는 여러 시스템에서 결합 된 복잡한 인증 로직을 필요로하는 모든 사람에게 강력히 권합니다.

어쨌든 RememberMe 기능을 제외한 모든 기능이 훌륭하게 작동합니다.

사용자가 로그인하면 auth 쿠키 (WebSecurity를 ​​통해)를 설정하고 ClaimsPrincipal을 새로 작성하여 SessionSecurityToken에 작성합니다. Bam, 훌륭하게 작동합니다.

그러나 이전에 사용자가 (Websecurity) 인증 쿠키를 유지하기로 선택하면 로그인 방법을 무시할 수 있습니다.이 경우 내 ClaimsPrincipal의 소식을 받고 내 주체를 내 SessionSecurityToken에 기록합니다. 내 클레임이로드되지 않아 내 승인이 실패합니다. ClaimsPrincipal을 변형 할 기회가 없기 때문입니다.

(Websecurity) "폼 인증 쿠키 읽기"이벤트에 연결하는 방법이 있습니까? 만일 그렇다면, 나는 그것을 처리 할 수있다, 나의 ClaimsPrincipal의 새로운 것. 그리고 도중에있을 것이다. 미리 감사드립니다!

답변

2

사용자 정의 AuthorizeAttribute 작성할 수

public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var authorized = base.AuthorizeCore(httpContext); 
     if (authorized) 
     { 
      httpContext.User = new ClaimsPrincipal(...) 
     } 

     return authorized; 
    } 
} 

지금이 사용자 정의로 장식 보호 된 컨트롤러 액션은 기본 대신 속성

을 내장 :

[MyAUthorize] 
public ActionResult Protected() 
{ 
    ... 
} 
+0

핫! 이봐. 감사합니다. 그건 잘된거야. – kmehta

+0

@Darin, 좋은 것. 글로벌 필터를 사용하여 모든 것을 기본적으로 차단하고 로그인 컨트롤러에 대해서만 'AllowAnonymous'를 사용하여 화이트리스트를 작성하면 어떻게됩니까? FilterConfig 클래스에서 filters.Add (new MyAUthorizeAttribute())를 등록하는 것과 동일한 원리가 있다고 생각합니다. 맞습니까? – joedotnot