我有以下操作方法:-
[OutputCache(Duration = 120, VaryByParam = "*")]
[CheckUserPermissions(Action = "Read", Model = "Switch")]
public ActionResult RackSwitch(int id, int page = 1)
{
//code goes here
第一个动作过滤器将缓存数据 120 秒,而第二个动作过滤器将执行自定义授权检查,如果授权失败,将返回 _unauthrized 视图,如下所示:-
public class CheckUserPermissionsAttribute : ActionFilterAttribute
{
public string Model { get; set; }
public string Action { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//code goes here
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
var viewResult = new JsonResult();
viewResult.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
viewResult.Data = (new { IsSuccess = "Unauthorized", description = "Sorry, you do not have the required permission to perform this action." });
filterContext.Result = viewResult;
}
else
{
var viewResult = new ViewResult();
viewResult.ViewName = "~/Views/Errors/_Unauthorized.cshtml";
filterContext.Result = viewResult;
}
}
base.OnActionExecuting(filterContext);
}
}
}
所以我的问题是天气动作过滤器的顺序?那么先做 Outputcache 然后自定义授权,与先做自定义授权然后 outputcache 不同吗?谢谢