【发布时间】:2011-03-12 16:04:53
【问题描述】:
所以我将它设置在我的控制器之上: [授权(角色=“管理员”)]
问题是他们是否没有登录,或者没有正确的角色,它会将他们重定向到登录页面。有没有办法让它以不同的方式处理授权和身份验证?
【问题讨论】:
标签: authentication asp.net-mvc-2 authorization
所以我将它设置在我的控制器之上: [授权(角色=“管理员”)]
问题是他们是否没有登录,或者没有正确的角色,它会将他们重定向到登录页面。有没有办法让它以不同的方式处理授权和身份验证?
【问题讨论】:
标签: authentication asp.net-mvc-2 authorization
我可能不太了解你,但是身份验证和授权总是在一起的。一个说使用哪种机制来验证用户(表单、窗口等),第二个说允许哪些角色或用户查看内容。 .
就您的网络配置中设置的身份验证方法而言,它是固定的,并且只认为您可以用来保护您的控制器方法就是放置这些属性。
另外,如果你想以不同的方式使用它,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()
{
...
}
【讨论】: