当我通过以下方式在启动文件中设置cookie路径时:
.AddCookie(opts =>
{
opts.AccessDeniedPath = "/Account/AccessDenied";
opts.LoginPath = "/Account/SignIn";
opts.Cookie.HttpOnly = true;
opts.Cookie.SecurePolicy = CookieSecurePolicy.Always;
opts.SessionStore = authSessionStore;
opts.Cookie.Path = "/api";
});
身份验证失败。要进行身份验证,请使用azure / microsoft登录名(如果有道理的话)。尝试登录时,它只会不断刷新浏览器。我的意思是当我按下loggin按钮转到microsoft登录页面时,consol中没有错误,或者发生了什么。在输出中,我可以看到以下几行:
Microsoft.AspNetCore.Authorization.DefaultAuthorizationService:信息: 用户授权失败:(空)。 Microsoft.AspNetCore.Mvc.ChallengeResult:信息:正在执行 带有身份验证方案()的ChallengeResult。
关于这一点的任何想法,为什么会发生,以及如何通过保持指定的路径来解决它?
P.S删除路径后,效果很好,如果没有足够的详细信息,请说。 PS我正在使用.Net Core 2.0
答案 0 :(得分:0)
如果您以后使用的是.Net Core 2.1.x,则需要添加IsEssential = true
.AddCookie(opts =>
{
opts.AccessDeniedPath = "/Account/AccessDenied";
opts.LoginPath = "/Account/SignIn";
opts.Cookie.HttpOnly = true;
opts.Cookie.SecurePolicy = CookieSecurePolicy.Always;
opts.SessionStore = authSessionStore;
opts.Cookie.Path = "/api";
opts.Cookie.IsEssential = true;
});