gpt4 book ai didi

asp.net - asp.net 中的 session 和身份验证

转载 作者:行者123 更新时间:2023-12-04 05:40:20 26 4
gpt4 key购买 nike

在开发站点时(使用 Forms 身份验证和 InProc sessionstate),经常遇到这样的情况:我丢失了 Session 中存储的变量(例如 Session["myVar"]),但我的 auth-session 仍然有效。

这会导致我的网站出现一些奇怪的行为。

为什么会发生这种情况,我该怎么做才能防止我的身份验证和 session 变量出现不同的生命周期?

最佳答案

在 Asp.Net 中, session 和“登录”不是一回事。

两者(通常)都由 cookie 控制,但 cookie 是独立的。

要控制 session 保持事件的时间,请参阅 Jonas T 的回答。 .

要控制用户保持登录状态的时间,您可以使用 <forms ... /> 上的超时时间。元素:

<system.web>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="120" slidingExpiration="true"/>
</authentication>
...
</system.web>

要解决您的问题,您应该确保 session 超时至少与表单例份验证超时一样长。

如果您允许在表单例份验证中保留 cookie(“记住我”),则没有任何保证。在这种情况下,您只需根据某些标准/规范将 session 超时设置为“足够长”。

编辑 :还要检查部署站点的应用程序池(在 IIS 下)上的设置。并特别检查“ Idle Time-out”是什么。如果设置得较低(我认为默认值为 20 分钟),那么如果在此期间没有请求进入,IIS 将关闭应用程序池。这(当然)会终止任何存在的进程内 session 。

关于asp.net - asp.net 中的 session 和身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11343354/

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