我在我的 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”函数?需要帮忙...