0
我正在考慮編寫自定義授權屬性,我不確定輸出緩存。 屬性應該是這樣的: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