asp.net mvc 5有时会将身份验证重定向到account/login,而不是account/login
本文关键字:account login 重定向 身份验证 mvc net asp | 更新日期: 2023-09-27 18:23:48
我正在使用Asp.net MVC 5.1.1并面临这个奇怪的问题。每当我将web应用程序部署到测试服务器(具有IIS 8.5)时,当前会话都会过期(这是显而易见的),然后它们会重定向到account/login而不是account/login。正常注销或新页面点击正确使用户进行帐户/登录(这是我在配置中设置的)。但在会话到期后,它会显示出这种奇怪的行为。我检查了一下,没有引用webmatrix.dll。即使是这个问题也没有帮助。请告诉我出了什么问题。感谢
编辑1:
<authentication mode="Forms">
<forms loginUrl="~/Account/Logon" timeout="2880" />
</authentication>
我遇到了同样的问题,你应该检查你的StartupAuth.cs
这个答案对我帮助很大:http://coding.abel.nu/2014/11/using-owin-external-login-without-asp-net-identity/
此外,添加此条目有助于:https://stackoverflow.com/a/6081661/79379
为了将来参考,我将在这里包括相关代码:
<add key="loginUrl" value="~/Account/LogOn" />
public partial class Startup
{
private void ConfigureAuth(IAppBuilder app)
{
var cookieOptions = new CookieAuthenticationOptions
{
LoginPath = new PathString("/Account/Login")
};
app.UseCookieAuthentication(cookieOptions);
}
}
据我所知,MVC 5附带了新的OWIN/ASP.NETIdentity身份验证位。在一个新的MVC 5项目的web.config中,我实际上注意到FormsAuthenticationModule
被禁用了
<system.webServer>
<modules>
<remove name="FormsAuthenticationModule" />
</modules>
此外,在App_Start文件夹中创建了一个名为Startup.Auth.cs的新文件。该文件内部是CookieAuthenticationOptions
(新的FormsAuthentication名称)的定义,默认登录路径为"/Account/login"
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
尝试将该路径更改为应用程序的正确路径。或者,您无法使用新的ASP.NET标识位并删除web.config中删除FormsAuthenticationModule
的行。
如果您不使用或希望使用新的身份验证选项,请删除对应用程序根目录下Startup.cs
文件中ConfigureAuth()
的调用,并删除web.config中删除FormsAuthenticationModule
的上述行。这应该会恢复预期的行为(同样,在不知道对默认代码进行了多少自定义的情况下)。