问题
创建一个IAuthorizeAttribute
将在默认 MVC AuthorizeAttribute 之前执行的自定义。默认 AuthorizeAttribute 似乎总是在我的自定义属性之前运行。
我尝试过的事情
- 我创建了一个继承自 IAuthorizationFilter 的自定义属性。
- 我已经将此属性注册为全局过滤器,如下所示:
filters.Add(new HandleCrossDomainAuthenticationAttribute() { Order = 1 });
- 我已经阅读了有关 msdn 上的操作过滤器:http: //msdn.microsoft.com/en-us/library/dd381609.aspx
自定义属性
public class HandleCrossDomainAuthenticationAttribute : FilterAttribute, IAuthorizationFilter
{
#region IAuthorizationFilter Members
void IAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
{
throw new ArgumentNullException("filterContext");
}
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
tryCrossDomainAuthentication(filterContext); //this will set the filterContext.Result to a certain url
}
}
#endregion
}
其他观察
当我指定一个让我很难过Order = 2
的事情时,它确实有效。AuthorizeAttribute
但这不是一个非常易于管理的方法......