gpt4 book ai didi

c# - .NET Core 2.x 中的默认 session 到期时间是多少?

转载 作者:太空狗 更新时间:2023-10-29 21:52:44 25 4
gpt4 key购买 nike

在我的启动类中,我使用以下行启用 session 存储:

        services.AddDistributedMemoryCache()
.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(20);
options.Cookie.HttpOnly = true;
})

但是,如果我理解正确的话,设置 IdleTimeout 属性只是说明如果用户在超过 20 分钟内没有完成任何操作, session 将重新开始。我的应用程序有轮询,每 5-10 秒使用 session 存储中的用户信息,所以我认为这不会在这里使用。用户权限和角色可能会因当前用户浏览器之外的操作而发生变化,因此我想将 session 存储限制为 1 分钟。我似乎找不到关于默认到期时间或如何正确设置的任何确切措辞。

CookieBuilder 类有 Expiration 和 MaxAge 选项,但我不知道哪一个是必需的。我也读过 Expiration is ignored ,所以这更加增加了我对这个主题的困惑。

更新:当我尝试设置过期时收到此消息:“不能为 SessionOption 定义的 cookie 设置过期”,所以我将 MaxAge 设置为 1 分钟,但我可以看到 session 仍然有旧的超过 1 分钟后,其中的用户数据。

最佳答案

session 没有像 cookie 那样的“过期”,但默认的空闲超时 是 20 分钟,并且可以使用 IdleTimeout 选项进行调整。

session 仅在空闲超时时间过后才过期。此外,空闲超时在收到最后一个请求后开始。

对于您的情况, session 不会过期,因为您每 5 - 10 秒轮询一次(检查 session 数据)。此轮询被视为对 .net 核心的“请求”,并重置超时。

您可以通过禁用轮询并创建一个带有检查 session 数据的按钮的页面来验证这一点。等待一段时间(例如:20 秒),然后单击按钮。

确保将空闲超时设置为较低的值:

options.IdleTimeout = TimeSpan.FromSeconds(10);

这是 Documentation on Session 的链接.

关于c# - .NET Core 2.x 中的默认 session 到期时间是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55939326/

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