vto*_*ola 19 asp.net-mvc authorize-attribute action-filter asp.net-mvc-3
我创建了两个实现的类AuthorizeAttribute
.
一个是全局使用的,我将它设置在Global.asax.cs上:
filters.Add(new FirstAuthorizeAttribute() { Order = 0 });
Run Code Online (Sandbox Code Playgroud)
另一个被调用SecondAuthorizeAttribute
,它只在一些动作方法中使用,我在我想要的方法中使用它作为属性.
[HttpGet]
[SecondAuthorize]
public ActionResult LogOut()
{
FormsAuthentication.SignOut();
Session.Clear();
Session.Abandon();
return Redirect(Url.Content("~/"));
}
Run Code Online (Sandbox Code Playgroud)
问题是SecondAuthorizeAttribute
始终执行之前FirstAuthorizeAttribute
,我需要先执行此操作.订单没有帮助,我怎么能这样做?
fre*_*n-m 20
@HectorCorrea的答案中的链接目前尚未解决,这是从当前Google缓存中检索和汇总的内容(如果也是这样):
过滤器按此顺序执行:
在每个过滤器中,您可以指定Order属性.(所有过滤器都派生自抽象类FilterAttribute,并且此类具有Order属性).此属性将确保筛选器以特定订单运行.
例如:
[AuthorizationFilterA(Order=2)]
[AuthorizationFilterB(Order=1)]
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
还有FilterScope
,默认情况下,当订单相同(或未指定)时,具有最低范围的过滤器首先运行:
namespace System.Web.Mvc {
public enum FilterScope {
First = 0,
Global = 10,
Controller = 20,
Action = 30,
Last = 100,
}
}
Run Code Online (Sandbox Code Playgroud)
如果未指定订单,则订单值为-1(首先,不是最后一个).
控制器本身可以是过滤器,并将按顺序运行 Int32.MinValue
Hec*_*rea 12
这是一个很长的镜头,但您是否尝试过使用FirstAuthorizeAttribute的Global和First值?
http://msdn.microsoft.com/en-us/library/system.web.mvc.filterscope(v=vs.98).aspx
http://blog.rajsoftware.com/post/2011/05/14/MVC3-Filter-Ordering.aspx
归档时间: |
|
查看次数: |
18090 次 |
最近记录: |