帮助asp.net mvc授权

时间:2010-01-27 04:59:05

标签: asp.net-mvc security

我正在使用内置授权过滤器的asp.net mvc。 我唯一的问题是,当我们没有权限执行某个操作时,我不希望它将我的用户重定向到登录页面...即使已经登录,它也总是将他们带到登录页面(但不是有管理员角色)..我想能够决定在他们试图执行动作之后将它们带到哪里,不允许这样做。

2 个答案:

答案 0 :(得分:2)

Subclass AuthorizeAttribute并覆盖HandleAuthorizationFailed()方法。此方法的默认逻辑是它将上下文的结果设置为HttpUnauthorizedResult,但您可以从此方法执行任何操作。然后使用此新属性将目标方法归属。

答案 1 :(得分:0)

正如Levi所说,你需要通过覆盖AthorizeAttribute来创建自己的自定义AttributeFilter。像

这样的东西
public class CustomAuthorizeAttribute : AuthorizeAttribute {

  public string Url { get; set; }

  public override void OnAuthorization(AuthorizationContext filterContext) {
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated) { //or custom authorization logic
      filterContext.HttpContext.Response.Redirect(Url);
    }
    base.OnAuthorization(filterContext);
  }

 }


[CustomAuthorizeAttribute(Url="/Admin/AccessDenied")]
public ActionResult Admin() {
  return View();
}

取自this similar question