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()
)? - Если мне действительно нужен дополнительный код, что именно он делает?
- Если у меня все в порядке, как предотвратить кэширование страницы?
Спасибо, что помогает упростить вещи * много *. – devuxer