private void PreventPageFromBeingCached(AuthorizationContext filterContext)
{
var cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
}
我问的原因是我最初在自定义AuthorizeAttribute
中有以下代码:
private void PreventPageFromBeingCached(AuthorizationContext filterContext)
{
var cachePolicy = filterContext.HttpContext.Response.Cache;
cachePolicy.SetProxyMaxAge(new TimeSpan(0));
cachePolicy.AddValidationCallback(CacheValidateHandler, null);
}
protected void CacheValidateHandler(
HttpContext context, object data, ref HttpValidationStatus validationStatus)
{
//todo validationStatus = OnCacheAuthorization(new HttpContextWrapper(context));
}
我基本上刚刚从StackOverflow上的答案粘贴了这段代码,之后我将这个逻辑移到IAuthorizationFilter
。
问题是,通过切换到界面,我丢失了AuthorizeAttribute
OnCacheAuthorization
的实现。根据文档,OnCacheAuthorization
在缓存模块请求授权时被调用。这并没有真正告诉我实现这个方法需要做什么,或者我是否首先需要回调。
问题
PreventPageFromBeingCached
实际上会阻止网页仅使用两行代码进行缓存,还是需要包含cachePolicy.AddValidationCallback(CacheValidateHandler, null);
和CacheValidateHandler()
方法(以及OnCacheAuthorization()
的实现1}})?