MVC 5 重定向至“登录页面与 OWIN 不起作用”诊断树

本文关键字:OWIN 登录页面与 不起作用 诊断 重定向 登录 MVC | 更新日期: 2023-09-27 18:37:24

我正在尝试使用OWIN来解决问题。 我创建了两个MVC 5项目。 一个使用 Aspnet.Identity 进行身份验证,另一个作为空项目启动。

我将以下内容添加到 emptyp 项目中:

  • 具有登录操作和共同响应视图的帐户控制器

  • 启动.cs和另一个部分启动.cs

public partial class Startup
{
        public void ConfigureAuth(IAppBuilder app)
        {
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "ApplicationCookie",
                LoginPath = new PathString("/Account/Login")
            });
        }
    }

我在两个项目中都使用 [Authorize] 属性装饰了主控制器中的"关于"操作。

当我运行第一个项目并在登录前转到"关于"屏幕时,它会按预期重定向到登录操作。 当我对第二个项目执行相同的操作时,我收到"HTTP 错误 401.0 - 未经授权"而不是重定向。

知道是什么会导致第二个人以这种方式行事吗?

MVC 5 重定向至“登录页面与 OWIN 不起作用”诊断树

我已经创建了两个新的类似项目,并且能够重现您的错误。

在空白项目中,我必须安装Microsoft.Owin.Host.SystemWeb(通过Nuget),一旦我这样做了,我的Startup.cs类就会出现一堆错误。 最终得到这个:

[assembly: OwinStartupAttribute(typeof(v2.Startup))]
namespace v2
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
        public void ConfigureAuth(IAppBuilder app)
        {
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = "ApplicationCookie",
                LoginPath = new PathString("/Account/Login")
            });
        }
    }
}

最后,当我调用用 [Authorize] 属性修饰的 About() 方法时,我现在能够点击/看到我的登录视图。

希望这有帮助!文 斯

根据 ASP.NET MVC 5 Web.config: "FormsAuthenticationModule" 或 "FormsAuthentication"

<system.webServer>
    <modules>
      <remove name="FormsAuthentication" />
    </modules>
</system.webServer>

为了提高安全性,我保留了两个"错别字"处理程序(以防Microsoft以后给我更改它)

<system.webServer>
    <modules>
     <remove name="FormsAuthenticationModule" />
     <remove name="FormsAuthentication" />
    </modules>
</system.webServer>