TLDR
我受雇维护的网站在两个地方处理安全性:web.config表单身份验证,以及通过检查MasterPage后面代码中的Session cookie。因此,更改安全性详细信息(例如使某些页面无需登录即可访问)需要在both
处进行更改。只需忘记一个,网络开发工具中就会发生奇怪的事情……
我的网站运行得非常好,但是留下的小问题让我感到困惑。它使用Forms身份验证,但根目录中的所有文件均不受限制;仅某些目录在本地web.config中具有deny users=?
。尽管如此,登录前仍无法访问根目录中的asp页,并使用302 Found, Redirect
进行响应。
这是根目录中web.config的一部分:
<authentication mode="Forms">
<forms name="MYWEBAPP.ASPXAUTH" loginUrl="~/Welkom.aspx"
protection="All" timeout="181" slidingExpiration="true" path="/"/>
</authentication>
并且没有<authorization>
部分。
应该允许用户在登录之前访问/Cookies.aspx之类的页面,但是使用FireFox F12开发工具的“网络”选项卡时,我看到响应为302,然后重定向到/Login.aspx
这导致两个问题:
我承认Welkom.aspx在这里可能看起来很奇怪,但是它工作了好几年,如果查询参数中有合适的URL,它会执行Response.Redirect("/Login.aspx")
。但是我检查了Page_Load()中的调试器断点,在上述问题中,未访问Welkom.aspx.cs,因此IIS(Expr)直接进入/Login.aspx,非常奇怪。
答案 0 :(得分:0)
问题不在于HTTP的工作原理,而在于我自己在MasterPage代码中位于Response.Redirect()后面的代码。当您的代码库越来越大时,这种人为错误就会蔓延。因此,从这个问题上没有什么技术可学。