授权重定向401不起作用

时间:2016-12-22 13:44:19

标签: redirect cookies browser asp.net-core authorization

我在.net-core中使用cookieauthentication实现了一个实现。

但是,我遇到以下问题: 当我没有登录并且设置AuthorizationAttribute时访问页面时,它只显示一个空白页面,而不是将我重定向到登录页面。

Fiddler告诉我,我收到了401未经授权的回复。 Location Header设置为/ Home,但浏览器会忽略,因为状态代码为401。

cookie实现如下所示:

          app.UseCookieAuthentication(new CookieAuthenticationOptions()
        {
            AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme,
            AutomaticAuthenticate = true,
            AutomaticChallenge = true,
            LoginPath = new PathString("/Home"),
            LogoutPath = new PathString("/logout"),
            AccessDeniedPath = new PathString("/accessdenied")
        });

AuthorizationAttribute工作正常,因为我可以在登录后立即访问该页面。

根据我的理解,AutomaticChallenge = true应该处理这个问题。这是错的吗?

1 个答案:

答案 0 :(得分:1)

您遇到AutomaticChallenge选项的问题。此选项导致IISIntegration和Cookie中间件之间发生冲突,请参阅详细说明here

如果您使用[授权],解决方案是将以下代码添加到ConfigureServices(IServiceCollection services)内的startup.cs

services.AddAuthorization(options =>
{
    options.DefaultPolicy = new AuthorizationPolicyBuilder("Cookies").RequireAuthenticatedUser().Build();
});

我测试了它并且它有效!