使用 ASP.Net MVC 2,有什么方法可以使用重定向到动作() http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction.aspx的方法控制器 http://msdn.microsoft.com/en-us/library/dd505093%28v=VS.90%29.aspx类中的类基于AuthorizeAttribute
class?
public class CustomAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(HttpContextBase context) {
// Custom authentication goes here
return false;
}
public override void OnAuthorization(AuthorizationContext context) {
base.OnAuthorization(context);
// This would be my ideal result
context.Result = RedirectToAction("Action", "Controller");
}
}
我正在寻找一种方法,当用户身份验证失败时将用户重定向到特定的控制器/操作,而不是将其返回到登录页面。是否可以为该控制器/操作生成重定向 URL,然后使用重定向结果() http://msdn.microsoft.com/en-us/library/system.web.mvc.redirectresult.aspx?我试图避免仅仅对 URL 进行硬编码的诱惑。
你可以/应该覆盖HandleUnauthorizedRequest
代替OnAuthorization
。这是默认的实现:
protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
// Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
filterContext.Result = new HttpUnauthorizedResult();
}
你不能使用Controller.RedirectToAction
, 但是你can返回一个新的RedirectToRouteResult
.
所以你可以这样做:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) {
// Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs.
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary
{
{ "action", "ActionName" },
{ "controller", "ControllerName" }
});
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)