사용자 지정 권한 부여 특성을 쓸 생각하고 출력 캐싱에 대해 잘 모르겠습니다. 특성은 다음과 같이 보일 것이다 :AuthorizeAttribute 및 출력 캐싱 asp.net mvc 3
public class AuthorizeWithAreasAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (!filterContext.HttpContext.User.IsInRole(Roles))
{
var urlHelper = new UrlHelper(filterContext.RequestContext);
filterContext.HttpContext.Response.Redirect(urlHelper.Action(ControllerName, ActionName, new { area = AreaName }));
}
base.OnAuthorization(filterContext);
}
public string ControllerName { get; set; }
public string ActionName { get; set; }
public string AreaName { get; set; }
}
내가 책 전문의 asp.net MVC에서 인용 다음과 같습니다
당신이 [OutputCache를]과 인증 필터를 결합한다면, 무슨 일이? 최악의 경우 사용자는 권한이 부여 된 사용자가 처음으로 작업을 방문하여 실행되고 캐시되는 위험을 감수해야합니다. 승인되지 않은 사용자가 뒤 따르고 권한이 부여되지 않은 사용자는 캐시 된 출력을받습니다. 다행히도 ASP.NET MVC 팀은이 문제를 예상했으며 AuthorizeAttribute에 특별한 로직을 추가하여 ASP.NET 출력 캐싱과 잘 연동되도록했습니다. 출력 캐싱 모듈이 캐시의 응답을 제공 할 때 거의 알려지지 않은 출력 캐싱 API를 사용하여 실행되도록 자신을 등록합니다. 이렇게하면 권한이없는 사용자가 캐시 된 콘텐츠를 가져 오지 못하도록 방지 할 수 있습니다.
이 글을 읽은 후 캐싱과 관련하여 나에게 뭔가를해야할지 여부는 불분명합니다.
그러나 승인 된 사용자의 데이터가 다른 인증 된 사용자에게 표시 될 수 있습니다! – SepehrM