为什么ASP.NET Identity会返回401而不是重定向到登录页面?

时间:2016-05-15 23:09:37

标签: c# asp.net asp.net-mvc asp.net-mvc-5 asp.net-identity-2

我正在尝试使用代码优先将ASP NET Identity添加到现有的mvc5项目中。 我研究了生成VS的新项目,并且我在ASP.NET身份上撰写了许多文章。 在大多数情况下,我将代码从模板复制到我的项目中。我刚刚在IdentityDbContext上替换了DBContext,并且几乎没有更改。表由EF迁移生成,并通过UserManager和RoleManager通过Seed方法填充,因此,我认为,代码的某些部分按预期工作。

但是,当我将[Authorize]添加到Controller(而不是WebApi,只是Controller),并尝试从控制器获取页面时,我遇到了一个问题 - 服务器返回401.0错误,尽管选项设置为{{1} }。

这是我的代码Startup.Auth.cs

LoginPath = new PathString("/Account/Login")

这是我的Startup.cs

namespace App
{
    public partial class Startup
    {
        public void ConfigureAuth(IAppBuilder app)
        {
            app.CreatePerOwinContext(CwDb.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
            app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
                Provider = new CookieAuthenticationProvider
                {
                    OnValidateIdentity =
                        SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, User>(
                            validateInterval: TimeSpan.FromMinutes(30),
                            regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });
        }
    }
}

我只需要使用登录/通行证和cookie进行简单的身份验证,我不需要通过社交网络等进行身份验证。

我哪里错了?如何在vs生成的模板中获得重定向?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我刚刚将Microsoft.Owin.Host.SystemWeb添加到项目中并且工作正常。不幸的是,我见过的任何文章都没有关于这个库的必要性的信息。