使用表单身份验证和MVC 5,我看到重定向到登录页面两次。用Fiddler证实了这一点。顺序是:
testhost/myapp/
- 响应在步骤2中重定向到网址。testhost/myapp/login.aspx?ReturnURL=%2fmyapp%2f
- 重定向到第3步。testhost/myapp/login.aspx
- 响应状态为200,我获得了登录页面。如果我调试,我的断点会在每个请求的全局应用程序事件中被命中,例如Application_EndRequest。但是登录页面断点仅在具有空查询字符串的第二次调用时被命中。
即使我直接进入登录页面(testhost / myapp / login.aspx),我也会看到重定向。
即使登录页面工作之后我也担心由于第二次重定向导致查询字符串丢失。
我已禁用登录页面的授权,这没有任何区别:
<location path="Login.aspx">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
检查HTTP与HTTPS。 还有其他要检查的设置吗?
更新
<authentication mode="Forms">
<forms loginUrl="Login.aspx" requireSSL="false" timeout="60" protection="All" name="SqlAuthCookie" path="/" />
</authentication>
重定向代码(虽然它只在用户登录后执行;在这种情况下,只需要两次重定向才能进入登录页面):
System.Web.Security.FormsAuthentication.RedirectFromLoginPage(sUserName, false);
我在Fiddler中注意到的另一件事是上面第2步的响应包含没有值的ASP.NET_SessionId cookie,第3步的响应包含带有值的cookie。