此网页在Global.asax中有一个重定向循环

时间:2012-11-01 16:57:24

标签: asp.net-mvc

目标是在每个httpRequest上将所有用户重定向到我的自定义安全页面,只要Session变量为null或为空。

在Global.asax

该方法导致错误如下:

此网页有重定向循环 该网页导致了太多的重定向。清除此站点的cookie或允许第三方cookie可以解决问题。如果没有,则可能是服务器配置问题,而不是计算机问题。

protected void Application_PostAuthorizeRequest()
{
  if ((Session["SecurityCodeApproved"] == null || !(bool)Session["SecurityCodeApproved"]))
  {
    Response.RedirectToRoute("Security");
  }
}

2 个答案:

答案 0 :(得分:1)

看起来您正在重定向到同一页面,检查会话cookie是否已设置,如果没有,则再次重定向。它会不断重定向,直到设置了会话cookie,而你没有设置它。您需要在其他地方重定向或设置cookie以打破循环。

答案 1 :(得分:1)

不要在Global.asax中执行此操作,因为正如您所注意到的,每次事件触发时您都不会总是有会话。此外,您的代码将触发所有请求,包括针对css,图片和JavaScript等资源的请求。您要做的是使用全局过滤器属性来执行您的逻辑,或者如果您使用的是WebForms,则需要在页面级别执行此操作。

当执行过滤器时,您将获得一个FilterContext,它将包含您需要的请求和会话对象。

然后,您可以重定向到您的安全页面,但请确保在您的安全点上忽略您的过滤器属性。