gpt4 book ai didi

c# - ASP.NET Core 2.2 关闭浏览器选项卡时注销用户 - IsPersistent 无效

转载 作者:行者123 更新时间:2023-12-03 17:02:59 33 4
gpt4 key购买 nike

我知道这个问题似乎已经有人问过了,但这与 ASP.NET Core 而不是 ASP.NET 5 有关。

当用户关闭浏览器选项卡时,我试图让用户注销;我正在 MacOS 上使用 Chrome 和 Safari 对此进行测试。

目前,当我登录用户时,浏览器选项卡关闭并重新打开时,用户保持登录状态。

当我登录用户时,我设置了 AuthenticationProperties IsPersistentfalse .然而,当浏览器选项卡关闭时,用户在 Chrome 和 Safari 上都保持登录状态。 (浏览器没有关闭,只有选项卡)。

        Task task = HttpContext.SignInAsync(principal, 
new AuthenticationProperties
{
IsPersistent = false
});
await task;

根据文档: persistent-cookies

"You may want the cookie to persist across browser sessions"



在上面的例子中,我将 IsPersistent 设置为 false,并且我假设
cookie 不应在 session 中继续存在。

据我了解,浏览器不会关闭 session ,服务器会关闭,并且设置为 10 秒以下。

然而,通过如下测试,我无法让用户注销。
  • 登录用户
  • 确认用户已登录
  • 关闭浏览器选项卡,(不关闭浏览器)
  • 等待超过 10 秒
  • 打开浏览器选项卡并确保用户未登录。这失败

  • 这可能无关紧要...
    Starup.cs 有这个:
            services.AddSession(options =>
    {
    // Set a short timeout for easy testing.
    options.IdleTimeout = TimeSpan.FromSeconds(10);
    options.Cookie.HttpOnly = true;
    // Make the session cookie essential
    options.Cookie.IsEssential = true;

    });

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
    {
    options.LoginPath = "/auth/login";
    options.AccessDeniedPath = "/auth/accessdenied";
    });

    最佳答案

    session Cookie 和身份验证 Cookie 是两个独立的 Cookie,
    因此,options.IdleTimeout = TimeSpan.FromSeconds(10);对身份验证 cookie 没有影响。

    通过设置 ExpireTimeSpan身份验证 cookie 选项如下,将导致用户在浏览器关闭时注销,或者超过 10 秒处于非事件状态。此外SlidingExpiration如果在过期时间之前处于事件状态,则会通过在旧 cookie 过期之前发出新 cookie 来实现不注销用户的预期效果。

            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
    {
    options.LoginPath = "/auth/login";
    options.AccessDeniedPath = "/auth/accessdenied";
    options.Cookie.IsEssential = true;
    options.SlidingExpiration = true; // here 1
    options.ExpireTimeSpan = TimeSpan.FromSeconds(10);// here 2
    });
    IsPersistent属性,当设置为 true 时,不会影响 cookie 过期时间。例如它不会使 cookie 不过期。 IsPersistent是为了生存 browser , not the tab .

    关于c# - ASP.NET Core 2.2 关闭浏览器选项卡时注销用户 - IsPersistent 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55962249/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com