asp.net mvc-4 Web アプリケーションでカスタム ロール プロバイダーを使用しています。
「CustomRoleProvider」クラスでは、「RoleProvider」インターフェイスを拡張し、クラスの「IsUserInRole」、「GetRolesForUser」、および「GetAllRoles」関数をオーバーライドしました。それはうまくいきます。
ユーザーがアクセス権のないアクションにアクセスしようとすると、カスタム ページ (「~/Security/AccessDenied/Index」など) をリダイレクトしようとしています。ユーザーがデフォルトでそれを行おうとすると、ホームページにリダイレクトされます。カスタム ページをリダイレクトするために、'AuthorizeAttribute' インターフェイスを拡張し、'OnAuthorization' 関数をオーバーライドしました。しかし、「OnAuthorization」関数は呼び出されていないようです。
「AuthorizeAttribute」インターフェースを拡張するコードは次のとおりです。
public class AccessDeniedAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectResult("~/Security/AccessDenied/Index");
}
}
}
「OnAuthorization」関数が呼び出されないのはなぜですか? 助けが必要...