如何在ASP.NET Core中添加基于cookie的authenticationScheme?

时间:2018-12-22 03:10:56

标签: c# authentication asp.net-core

我想在控制器类中使用[Authorize]属性将未登录的用户重定向到我的登录页面。对于身份验证,我想保持简单,仅使用会话变量来跟踪是否有人登录。

我尝试将身份验证添加到启动类中

services.AddAuthentication()
            .AddCookie(options =>
            {
                options.AccessDeniedPath = new PathString("/Account/SignIn");
                options.LoginPath = new PathString("/Account/SignIn");
                options.LogoutPath = new PathString("/Home/SignOut");
            });

但是当我使用具有[Authorize]属性的控制器时出现错误:

  

InvalidOperationException:未指定authenticationScheme,也未找到DefaultChallengeScheme。

我知道我丢失了一些东西,只是不确定如何设置authenticationScheme或使用默认值。

1 个答案:

答案 0 :(得分:1)

您需要设置默认的AuthenticationScheme。

docs所说

  传递给AddAuthentication的

AuthenticationScheme设置默认值   应用程序的身份验证方案。

以您的情况

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>
            {
                options.AccessDeniedPath = new PathString("/Account/SignIn");
                options.LoginPath = new PathString("/Account/SignIn");
                options.LogoutPath = new PathString("/Home/SignOut");
            });