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>

asp.net mvc 5有时会将身份验证重定向到account/login,而不是account/login

我遇到了同样的问题,你应该检查你的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的上述行。这应该会恢复预期的行为(同样,在不知道对默认代码进行了多少自定义的情况下)。