我只是研究了ActionFilters,它们非常有用。现在,我尝试了多个装饰方法,以便分离逻辑。我认为这会很有用。
所以这是一个示例方法
[Common.PortalSecurity.Login]
[Common.PortalSecurity.UserRole]
public HttpResponseMessage GetAll(string sessionToken)
{
return new HttpResponseMessage();
}
这种方法很好,但Login
必须在UserRole
之前执行。
100%执行顺序是否会在每次请求时得到尊重?
这blog post似乎表明它应该有用。
有什么想法吗?
答案 0 :(得分:2)
我上面提出的解决方案是这样的:
您的自定义属性必须继承:
public class LoginAttribute : ActionFilterWithOrderAttribute
{
}
public class UserRoleAttribute : ActionFilterWithOrderAttribute
{
}
想要使用它的方法应该被装饰为:
[Common.PortalSecurity.Login(Order=1)]
[Common.PortalSecurity.UserRole(Order=2)]
public HttpResponseMessage GetAll(string sessionToken)
{
return new HttpResponseMessage();
}
答案 1 :(得分:0)
在 MVC5 中,您继承自 ActionFilter ,并在自定义属性中指明顺序(使用ActionFilter的Order 属性),如下所示:
[Common.PortalSecurity.Login(Order=1)]
[Common.PortalSecurity.UserRole(Order=2)]
public HttpResponseMessage GetAll(string sessionToken)
{
return new HttpResponseMessage();
}
您可以在以下网址获取更多信息:https://msdn.microsoft.com/en-us/library/system.web.mvc.filterattribute.order(v=vs.118).aspx