代码之家  ›  专栏  ›  技术社区  ›  Jhorra

ASP.NET/MVC授权vs身份验证

  •  1
  • Jhorra  · 技术社区  · 14 年前

    所以我把这个设置在我的控制器上面: [授权(roles=“administrator”)]

    问题是他们是否没有登录,或者没有正确的角色,它会将他们重定向到登录页面。有没有一种方法可以让它以不同的方式处理授权和身份验证?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Łukasz W.    14 年前

    我可能不太明白您的意思,但是身份验证和授权总是在一起的。一种是说哪个机制用于认证用户(窗体、窗口等),另一种是允许哪些角色或用户查看内容…

    只要在Web配置中设置了身份验证方法,它是固定的,并且您认为可以用来保护控制器方法的唯一方法是放置这些属性。

    另外,如果您想不同地使用它,F.E.重定向到不同的页面,您可以使用以下代码:

    public class RedirectAuthorizeAttribute : AuthorizeAttribute
    {
        public string RedirectUrl { get; set; }
    
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            filterContext.Result = new RedirectResult(RedirectUrl);
        }
    }
    

    然后把它放到你的控制器上,就像这样:

        [RedirectAuthorize(Roles = "MyRole", RedirectUrl = "SomeUrl")]
        public ActionResult SomeAction()
        {
           ...
        }