如何将没有适当角色的用户重定向到不允许?

Posted

技术标签:

【中文标题】如何将没有适当角色的用户重定向到不允许?【英文标题】:How to redirect user not in proper role to Not Permitted? 【发布时间】:2013-07-14 21:12:05 【问题描述】:

在 MVC 4 项目中使用 SimpleMembershipProvider 时,当没有适当角色的用户运行操作时,他会被重定向到 Account/Login。如何将用户重定向到我自己的“没有足够的权限查看页面”操作?

【问题讨论】:

【参考方案1】:

你可以重写方法来做到这一点

public class CustomAuthorizeAttribute : AuthorizeAttribute 
    public override void OnAuthorization(AuthorizationContext filterContext) 
        base.OnAuthorization(filterContext);

        if (filterContext == null) 
            throw new ArgumentNullException("filterContext");
        

        if (your code detecting no user is logged) 
            filterContext.Result = new RedirectResult(System.Web.Security.FormsAuthentication.LoginUrl + "?returnUrl=" + filterContext.HttpContext.Server.UrlEncode(filterContext.HttpContext.Request.RawUrl));
            return;
        

        if (your code detecting that the user has no access) 
            var ViewData = new ViewDataDictionary();
            ViewData.Add("Title", "No access");
            ViewData.Add("Description", "blah blah blah blah blah blah blah ");
            filterContext.Result = new ViewResult  ViewName = "~/Views/Shared/NoAccess.cshtml", ViewData = ViewData ;
        

    

【讨论】:

以上是关于如何将没有适当角色的用户重定向到不允许?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spring security 和 primefaces 处理重定向?

已完成 401 未授权请求被重定向到不允许需要预检的跨域请求

如何使弹簧安全重定向

一键——3个应用商店——如何将用户重定向到合适的应用商店?

授权后通过用户角色重定向到特定页面

Laravel:以不同方式重定向不同的用户角色