승인 ASP.NET MVC 캐싱
-
10-07-2019 - |
문제
내가 혼란에 ASP.NET MVC 캐싱과 인증 및 절실히 필요 일부는 설명을 합니다.
내 자신이 만든 권한 부여 특성에서 상속 AuthorizeAttribute
.그것의 재정의 AuthorizeCore
방법은 실행되지 않는 경우에도,내가 설정 [OutputCache]
특성 컨트롤러에서 작업입니다.내가 이해하는 부분입니다.
이제 마음을 벤더에 대한 저: AuthorizeCore
이 실패 모든 시간 지금 할 때 내가 실제로 출력 캐시고 페이지가 캐시에서 제공.그 이유는 요청은 캐시 httpContext.Session
공급과 AuthorizeCore
가 null
!?여기에 몇 가지 간단한 코드:
protected override bool AuthorizeCore(HttpContextBase httpContext) {
return (Session["userId"] != null)
}
그래서 만약 httpContext.Session
가 null
, 이것은 분명히 실패한다.요 세션에 액세스하지만,어떻게 다른 사람을 확인할 수 있습니다면 요청을 허가?이는 어떤 이해되지 않는다면 이것은 어떻게 그것이 있어야 그 다음 지 를 사용할 수 있 캐시된 페이지 함께 인증 ASP.NET MVC.Help?
해결책
두 가지 별도의 질문:
- 는 인증과 함께 작업에 캐싱 MVC?
- 는 세션 작업을 하기 전에 인증서의 얼굴시(도를 위해 인증되지 않은 사용자가,누가 아직 희망이 있는 독특한 세)?
대한 답은,각각 예 아니다.인증서 잘 작동합 caching.그것을 시도하 SQL 또는 도메인 회원자;당신이 볼 수 있습니다.
캐싱은,그러나,실행하기 전에 인증 모듈이 있습니다.(을 위한 보너스는 포인트:왜?) 인증은 경우에만 호출 구체적으로 후크 캐시(로 AuthorizeAttribute 는 않습니다).기 때문에 세션은 특정 사용자,거기에 no 을 보장해야 합 세션의 내부 AuthorizeCore.
더 많은 보너스 포인트:어떻게 이러한 변경 지정한 경우 varyByUser 에서 당신의 캐시 구성입니까?
불행하게도하고,인증을 맞이하기 때문에,열심히 일을 어떤 종류의 보안 오른쪽 어렵습니다.Microsoft 도 이것을 쉽게 구성원 공급 API 를 사용합니다. 나는 강하게 사용하는 것이 좋습는 을 구현할 때 사용자 정의 인증이 있습니다.또한 추천 사용하는 기본 제공되는 공급자와 확장하는 대신 그들을 다시 쓰기 때마다 그들을 가능합니다.
하나 다른 점:이 ASP.NET 세션 공급자 ASP.NET 공급자 멤버십 전 별개입니다.다른 멤버 사용자가 공유할 수 있(!) 세션과, 네, 할 공격 사이트 이 방법입니다.그 지 안전를 넣어 보안 관련 정보습니다.보안 어렵습니다.