【转】netcore获取不到session值

原文地址:https://www.cnblogs.com/LuoEast/p/9672349.html

原文地址:https://stackoverflow.com/questions/49317304/asp-net-core-2-1-session

在启动类的configure services()方法中,设置选项。checkconsent必需=context=false;如下:

services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => false; // Default is true, make it false
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

原因是:
我猜在默认情况下,checkconsent需要是正确的,这是为了实现GDPR的遵从性。如果您点击了页面顶部的同意弹出(在默认模板的情况下),您的会话cookie将按照您的预期开始工作。GDPR规定了cookie的操作方式,并且在用户同意使用cookie之前不会使用。

第二种设置方法

解决方案是将会话cookie标记为必不可少的。

public void ConfigureServices(IServiceCollection services)
{
    //...
    services.AddSession(opt =>
    {
        opt.Cookie.IsEssential = true;
    });
    //...
}

有关标志的文档指出:

指示此cookie对于应用程序正常运行是否必不可少。如果为true,则可以绕过同意策略检查。默认值为false。

这将使cookie策略选项保持不变,并且会话仍按预期运行,因为它CookiePolicyOptions.CheckConsentNeeded仅影响非必要的cookie。

posted @ 2019-10-16 18:02  花影疏帘  阅读(448)  评论(0)    收藏  举报