0

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

在 Global.asax

该方法导致错误如下:

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

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

2 回答 2

1

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

于 2012-11-01T16:59:31.200 回答
1

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

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

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

于 2012-11-01T19:08:35.973 回答