8

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

我在emptyp项目中添加了以下内容:

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

  • Startup.cs 和另一个部分 Startup.cs

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

我在两个项目中都使用 [Authorize] 属性修饰了 Home 控制器中的 About 操作。

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

知道什么会导致第二个行为如此吗?

4

2 回答 2

8

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

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

为了额外的安全,我将两个“错字”处理程序都留在了(以防微软稍后更改它给我)

<system.webServer>
    <modules>
     <remove name="FormsAuthenticationModule" />
     <remove name="FormsAuthentication" />
    </modules>
</system.webServer>
于 2014-03-31T21:37:53.703 回答
8

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

在空白项目中,我必须安装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() 方法时,我现在能够点击/查看我的登录视图。

希望这可以帮助!文斯

于 2013-10-29T13:32:22.670 回答