您可以像这样构建自己的授权属性:
public class ClubAuthorizeAttribute : AuthorizeAttribute
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {
{ "clubShortName", filterContext.RouteData.Values[ "clubShortName" ] },
{ "controller", "Account" },
{ "action", "Login" },
{ "ReturnUrl", filterContext.HttpContext.Request.RawUrl }
});
}
}
}
我用它来重定向到我正在建立的俱乐部会员网站中的特定俱乐部。您可以根据自己的需要进行调整。顺便说一句,在我的情况下,我确实重定向到登录页面,但我检查用户是否被授权,如果是,则显示他们没有正确权限的消息。毫无疑问,您也可以向 ViewData 或 TempData 添加一些内容以显示在页面上,但我还没有尝试过
编辑
AuthorizationContext.Cancel 在 RC 中不再存在。“filterContext.Result is HttpUnauthorizedResult”似乎就足够了:filterContext.Cancel(ASP.NET MVC)发生了什么