問題デフォルトのMVCAuthorizeAttributeの前に実行される
カスタムを作成します。IAuthorizeAttribute
デフォルトのAuthorizeAttributeは、常にカスタム属性の前に実行されているようです。
私が試したこと
- IAuthorizationFilterから継承するカスタム属性を作成しました。
- この属性を次のようにglobalfilterとして登録しました。
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