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