目标是在每个httpRequest上将所有用户重定向到我的自定义安全页面,只要Session变量为null或为空。
在Global.asax
中该方法导致错误如下:
此网页有重定向循环 该网页导致了太多的重定向。清除此站点的cookie或允许第三方cookie可以解决问题。如果没有,则可能是服务器配置问题,而不是计算机问题。
protected void Application_PostAuthorizeRequest()
{
if ((Session["SecurityCodeApproved"] == null || !(bool)Session["SecurityCodeApproved"]))
{
Response.RedirectToRoute("Security");
}
}
答案 0 :(得分:1)
看起来您正在重定向到同一页面,检查会话cookie是否已设置,如果没有,则再次重定向。它会不断重定向,直到设置了会话cookie,而你没有设置它。您需要在其他地方重定向或设置cookie以打破循环。
答案 1 :(得分:1)
不要在Global.asax中执行此操作,因为正如您所注意到的,每次事件触发时您都不会总是有会话。此外,您的代码将触发所有请求,包括针对css,图片和JavaScript等资源的请求。您要做的是使用全局过滤器属性来执行您的逻辑,或者如果您使用的是WebForms,则需要在页面级别执行此操作。
当执行过滤器时,您将获得一个FilterContext,它将包含您需要的请求和会话对象。
然后,您可以重定向到您的安全页面,但请确保在您的安全点上忽略您的过滤器属性。