Предотвратите Кэширование Атрибутов в ASP.NET MVC, вызовите Выполнение Атрибута каждый раз, когда Действие Выполняется

Вы передаете выражение, которое Вы хотите сгруппировать, а не псевдоним

SELECT       LastName + ', ' + FirstName AS 'FullName'
FROM         customers
GROUP BY      LastName + ', ' + FirstName
5
задан Community 23 May 2017 в 10:27
поделиться

2 ответа

. Посмотрите исходный код AuthorizeAttribute (на Codeplex или через Reflector), чтобы узнать, как отключить кеширование авторизованных страниц. Я реорганизовал его в отдельный метод в моем настраиваемом атрибуте авторизации, который является производным от AuthorizeAttribute.

protected void CacheValidateHandler( HttpContext context, object data, ref HttpValidationStatus validationStatus )
{
    validationStatus = OnCacheAuthorization( new HttpContextWrapper( context ) );
}

protected void SetCachePolicy( AuthorizationContext filterContext )
{
    // ** IMPORTANT **
    // Since we're performing authorization at the action level, the authorization code runs
    // after the output caching module. In the worst case this could allow an authorized user
    // to cause the page to be cached, then an unauthorized user would later be served the
    // cached page. We work around this by telling proxies not to cache the sensitive page,
    // then we hook our custom authorization code into the caching mechanism so that we have
    // the final say on whether a page should be served from the cache.
    HttpCachePolicyBase cachePolicy = filterContext.HttpContext.Response.Cache;
    cachePolicy.SetProxyMaxAge( new TimeSpan( 0 ) );
    cachePolicy.AddValidationCallback( CacheValidateHandler, null /* data */);
}
3
ответ дан 15 December 2019 в 01:06
поделиться

Я только что закончил оживленное обсуждение с Крейгом Стунцем (автором первой статьи, которую вы указали).

В итоге я использовал AuthorizeAttribute с AuthorizeCore, чтобы гарантировать, что авторизация вызывается даже в том случае, если страница кэшируется.

1
ответ дан 15 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: