And*_*rew 2 c# redirect actionfilterattribute asp.net-mvc-3 asp.net-mvc-2
我正在尝试使用ActionFilterAttribute重定向未登录的用户.虽然我的重定向工作正在重定向,但它首先调用我的所有ActionResult代码.
关于为什么它不尊重真正的旗帜并结束回应的任何想法?
HttpContext.Current.Response.Redirect("~/Logon",true);
Run Code Online (Sandbox Code Playgroud)
这是我的ActionResult:
[RequireLoggedIn]
public ActionResult Create()
{
return View(_MessageService.GetAllMessageCategories());
}
Run Code Online (Sandbox Code Playgroud)
这是我的属性:
public class RequireLoggedIn : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (Membership.GetUser() == null)
{
//Not logged in so back to the logon page.
HttpContext.Current.Response.Redirect("~/Logon",true);
HttpContext.Current.Response.End();
}
}
}
Run Code Online (Sandbox Code Playgroud)
您需要将to设置filterContext.Result为非null以避免下游处理,否则MVC不知道您已经短路.最简单的方法就是:
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (Membership.GetUser() == null) {
filterContext.Result = new RedirectResult("~/Logon");
}
}
Run Code Online (Sandbox Code Playgroud)