문제

내가 혼란에 ASP.NET MVC 캐싱과 인증 및 절실히 필요 일부는 설명을 합니다.

내 자신이 만든 권한 부여 특성에서 상속 AuthorizeAttribute.그것의 재정의 AuthorizeCore 방법은 실행되지 않는 경우에도,내가 설정 [OutputCache] 특성 컨트롤러에서 작업입니다.내가 이해하는 부분입니다.

이제 마음을 벤더에 대한 저: AuthorizeCore실패 모든 시간 지금 할 때 내가 실제로 출력 캐시고 페이지가 캐시에서 제공.그 이유는 요청은 캐시 httpContext.Session 공급과 AuthorizeCorenull!?여기에 몇 가지 간단한 코드:

protected override bool AuthorizeCore(HttpContextBase httpContext) {
    return (Session["userId"] != null)
}

그래서 만약 httpContext.Sessionnull, 이것은 분명히 실패한다.요 세션에 액세스하지만,어떻게 다른 사람을 확인할 수 있습니다면 요청을 허가?이는 어떤 이해되지 않는다면 이것은 어떻게 그것이 있어야 그 다음 를 사용할 수 있 캐시된 페이지 함께 인증 ASP.NET MVC.Help?

도움이 되었습니까?

해결책

두 가지 별도의 질문:

  1. 는 인증과 함께 작업에 캐싱 MVC?
  2. 는 세션 작업을 하기 전에 인증서의 얼굴시(도를 위해 인증되지 않은 사용자가,누가 아직 희망이 있는 독특한 세)?

대한 답은,각각 예 아니다.인증서 잘 작동합 caching.그것을 시도하 SQL 또는 도메인 회원자;당신이 볼 수 있습니다.

캐싱은,그러나,실행하기 전에 인증 모듈이 있습니다.(을 위한 보너스는 포인트:왜?) 인증은 경우에만 호출 구체적으로 후크 캐시(로 AuthorizeAttribute 는 않습니다).기 때문에 세션은 특정 사용자,거기에 no 을 보장해야 합 세션의 내부 AuthorizeCore.

더 많은 보너스 포인트:어떻게 이러한 변경 지정한 경우 varyByUser 에서 당신의 캐시 구성입니까?

불행하게도하고,인증을 맞이하기 때문에,열심히 일을 어떤 종류의 보안 오른쪽 어렵습니다.Microsoft 도 이것을 쉽게 구성원 공급 API 를 사용합니다. 나는 강하게 사용하는 것이 좋습는 을 구현할 때 사용자 정의 인증이 있습니다.또한 추천 사용하는 기본 제공되는 공급자와 확장하는 대신 그들을 다시 쓰기 때마다 그들을 가능합니다.

하나 다른 점:이 ASP.NET 세션 공급자 ASP.NET 공급자 멤버십 별개입니다.다른 멤버 사용자가 공유할 수 있(!) 세션과, , 할 공격 사이트 이 방법입니다.그 안전를 넣어 보안 관련 정보습니다.보안 어렵습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top