.Net核心身份验证设置cookie路径后失败

时间:2018-07-09 16:27:26

标签: c# .net core

当我通过以下方式在启动文件中设置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

1 个答案:

答案 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;
        });