我想在控制器类中使用[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或使用默认值。
答案 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");
});