会话超时或表单身份验证超时应该注销用户吗?

4

我对注销用户的方式有些困惑。

目前,我设置了会话超时时间为20分钟,并认为一旦会话过期,用户应该被注销。

我可以添加代码,在session_end事件中执行注销操作。

我在web.config文件中发现了一个表单身份验证超时时间。目前它设置为48小时。

我将身份验证超时时间更改为20分钟,这样就能实现注销了。

所以,是会话超时应该注销用户还是应该由表单身份验证超时来完成?

谢谢

编辑:

我现在面临的问题是,会话变量被设置为0,这很好,因为会话已经超时了。但我认为用户也应该被注销。

我的理解是,身份验证数据始终存储在cookie中,只有在达到表单身份验证超时时间后才会清除cookie。

因此,我面临的情况是预期的行为。用户失去了会话,但他仍然登录,因为身份验证信息存储在cookie中。

在这种情况下,我可以将会话超时时间设置为与表单身份验证超时时间完全相同。假设表单身份验证超时时间在用户在网站上进行任何操作时都会刷新。

另一种选择是在session_end方法中添加代码,注销用户。

编辑2:

身份验证超时时间是否与会话超时时间同时刷新?

编辑3:

我发现了这个"滑动过期将在单个会话期间的每个请求期间重置活动身份验证cookie的到期时间。",我认为这就是我想要实现的。如果会话和身份验证超时时间相同,则每次重置会话超时时间时身份验证超时时间也会被重置,这应该可以完成任务。欢迎任何反馈...


类似于https://dev59.com/N3M_5IYBdhLWcg3wPAZF - Tobiasopdenbrouw
2个回答

1

表单身份验证可以设置为使用 cookie 跟踪用户。这可能就是正在发生的事情。


1

我认为这取决于您的Web应用程序的性质。大多数“常规”网站(例如StackOverflow)在会话结束时不会注销用户。但是,对于安全关键的网站(即银行),用户的登录状态取决于会话,通常缩短为几分钟。

听起来,您的Web表单依赖于用户已登录,如果仅依赖于会话,则需要向服务器发送ping以保持会话活动状态。

除非该表单请求安全/个人信息,否则我不会对其完成设置短时间限制。这不会是我第一次填写一半的表格,然后去睡觉,在早上完成它!


这使得情况更加清晰。实际上,我并不想在会话被清除后注销用户。如果他们没有X、Y、Z的会话变量,那么用户不应该被允许执行某些操作。此外,我不明白为什么将表单身份验证超时设置为与会话超时相同是一种不好的做法?我遇到的建议是,表单身份验证超时应该是会话超时的两倍。谢谢。 - user338195

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接