【问题标题】:.AspNetCore.Session Secure attribute is not coming.AspNetCore.Session Secure 属性不来
【发布时间】:2020-09-15 10:25:58
【问题描述】:

我在Startup.cs的Configure方法中设置了CookiePolicyOptions:

app.UseCookiePolicy(new CookiePolicyOptions
{
    Secure = env.IsDevelopment() ? CookieSecurePolicy.None : CookieSecurePolicy.Always,
    MinimumSameSitePolicy = SameSiteMode.None
});

但安全属性在浏览器中显示为空白。我尝试将它部署在不同的环境中,但这个安全值并没有出现。 .AspNetCore.CookiesC1 等其他 Cookie 带有 Secure 属性,但不带有 .AspNetCore.Session

【问题讨论】:

  • 你运行的是什么环境?您在 Development 时似乎没有设置任何安全策略。
  • 开发是针对我的本地的,但是当它进入阶段和测试环境时,应该反映安全策略。 AspNetCore.session cookie 有问题,其他人正在设置。
  • 可能是清除先前cookie的问题?
  • 我确实尝试清除浏览器 cookie、缓存,当我在 ConfigureServices 方法中添加此代码时,AspNetCore.Session cookie 未显示在浏览器的 Cookies 部分下。 services.AddSession(options => { options.Cookie.SecurePolicy = CookieSecurePolicy.Always; });
  • 在设置会话cookie时尝试添加options.Cookie.IsEssential = true;。否则在用户接受cookie之前不会设置

标签: .net asp.net-core .net-core session-cookies


【解决方案1】:

我确实尝试清除浏览器 cookie、缓存以及添加此代码时 在我的 ConfigureServices 方法中,AspNetCore.Session cookie 不是 显示在浏览器的 Cookie 部分下。 services.AddSession(选项 => { options.Cookie.SecurePolicy = CookieSecurePolicy.Always; });

运行项目时,确实应该先清除缓存

清除缓存后,需要触发使用会话的代码再次查看.AspNetCore.Session cookie的状态。

你可以在'/home/index'等默认动作代码中加入Session的使用,在'/home/Privacy'中测试并获取。

public IActionResult Index()
    {
        HttpContext.Session.SetInt32("a", 123);
        return View();
    }

    public IActionResult Privacy()
    {
        int a = Convert.ToInt32(HttpContext.Session.GetInt32("a"));
        return View(a);
    }

隐私.cshtml:

@model int
@{
    ViewData["Title"] = "Privacy Policy";
}
<h1>@ViewData["Title"]</h1>

<p>Use this page to detail your site's privacy policy.</p>

value: @Model

配置服务:

 services.AddSession();

配置:

          app.UseCookiePolicy(new CookiePolicyOptions
            {

                Secure = env.IsDevelopment() ? CookieSecurePolicy.None: CookieSecurePolicy.Always ,
                MinimumSameSitePolicy = SameSiteMode.None
            });
            app.UseSession();

具体操作请参考以下:

这是development environment中的测试操作:

这是production environment(IIS)中的测试操作:

需要注意的是,当你发布到production environment时,因为你把.AspNetCore.Session Secure改成了Always,所以需要选择https而不是http。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2020-02-09
    • 2021-01-04
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 2020-09-24
    • 2020-03-30
    相关资源
    最近更新 更多