Asp.net mvc asp.net mvc授权帮助

Asp.net mvc asp.net mvc授权帮助,asp.net-mvc,security,Asp.net Mvc,Security,Im使用asp.net mvc内置的授权过滤器。 我唯一的问题是,当我的用户没有权限执行某个操作时,我不希望它将我的用户重定向到登录页面。。。即使他们已经登录(但不是使用管理员角色),它也会将他们带到登录页面。。我希望能够在他们尝试执行不允许执行的操作后决定将他们带到何处..任何人?子类AuthorizeAttribute并重写HandleAuthorizationFailed()方法。此方法的默认逻辑是,它将上下文的结果设置为HttpUnauthorizedResult,但您可以通过此方法执行

Im使用asp.net mvc内置的授权过滤器。
我唯一的问题是,当我的用户没有权限执行某个操作时,我不希望它将我的用户重定向到登录页面。。。即使他们已经登录(但不是使用管理员角色),它也会将他们带到登录页面。。我希望能够在他们尝试执行不允许执行的操作后决定将他们带到何处..任何人?

子类AuthorizeAttribute并重写HandleAuthorizationFailed()方法。此方法的默认逻辑是,它将上下文的结果设置为HttpUnauthorizedResult,但您可以通过此方法执行任何操作。然后用这个新属性对目标方法进行属性化。

正如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();
}
取自