【发布时间】:2016-11-21 06:18:01
【问题描述】:
我制作了一个过滤器,它检查会话变量是否为空。 如果它没有价值,那么我会重定向到登录页面。 这个过滤器的代码如果喜欢-
public class AuthorizerActionFilter : ActionFilterAttribute , IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
if (HttpContext.Current.Session != null)
{
if (HttpContext.Current.Session["UserInfo"] == null)
{
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary {{ "Controller", "UserLogin" },
{ "Action", "UserLogin" } });
}
}
}
base.OnActionExecuting(filterContext);
}
}
然后我像这样将这个过滤器注册到 Global.asax-
GlobalFilters.Filters.Add(new AuthorizerActionFilter());
我的应用程序中的每个请求都首先进入这个过滤器。 当我第一次运行我的应用程序时,此过滤器运行两次并打开登录页面,它没有从过滤器重定向,因为它不是 ajax 请求。 我填写了登录凭据,当我单击登录时,ajax 请求首先进入此过滤器。 这是我的问题,这次什么也没发生。我的意思是当我调试 AuthorizerActionFilter 过滤器代码时,这个过滤器会一次又一次地运行。为什么会发生 Redirecting the Controller-Action 有什么问题吗?
【问题讨论】:
标签: asp.net-mvc-4 redirect filter