会话到期时网站通常如何自动注销用户?

Posted

技术标签:

【中文标题】会话到期时网站通常如何自动注销用户?【英文标题】:How do websites generally log users out automatically when session expires? 【发布时间】:2010-12-27 09:10:47 【问题描述】:

网站通常如何注销用户并在用户会话到期时自动将其发送到登录屏幕?这是通过 ajax 还是运行异步处理程序完成的?能给我解释一下吗?

【问题讨论】:

您使用的是什么平台(IIS、apache 等?) 如果您的会话到期,您不会退出吗? 我使用 IIS 作为我的平台 如果会话过期,您将被注销,但不会自动重定向到登录屏幕。 您是使用内置的 asp 成员身份进行身份验证还是使用其他方法(例如将登录信息存储在 Session 中?) 【参考方案1】:

银行等通过 javascript 或类似的方式使用客户端超时。但实际上,服务器会处理实际的会话,因此如果您禁用客户端逻辑,它的行为就像您在注销时尝试进行事务一样。

【讨论】:

【参考方案2】:

使用 cookie 和会话。

必须在会话进行时设置 Cookie 开始了。 如果 cookie 存在但 会话消失,重定向到 登录屏幕。 如果没有会话也没有 cookie 什么都不做

(如果你不能这样做,请原谅我,因为我从未使用过 ASP,并且我的答案基于我的 php 知识)

【讨论】:

【参考方案3】:

通常,您会在会话 ID cookie 上设置过期时间戳。当 cookie 发送失败时,客户端被注销(没有给定会话 ID)。

此方法通常与 JavaScript 和 另一个 时间戳标记结合使用。当计时器开始运行时,会发送一个通知,允许用户“刷新”他们的会话......本质上是在会话时间戳过期之前发出请求。

“刷新”请求可以是任何东西,甚至是像加载图像这样简单的东西。

【讨论】:

【参考方案4】:

如果您使用的是 Tomcat,您可以在 web.xml 定义中使用其内置的 <security-constraint> 机制。所有的时间、登录屏幕和页面重定向都由 Tomcat 处理,除了定义之外,您几乎不需要付出任何努力。

哦,IIS...没关系。

【讨论】:

以上是关于会话到期时网站通常如何自动注销用户?的主要内容,如果未能解决你的问题,请参考以下文章

具有滑动到期的 IdentityServer 永远不会注销用户

当用户注销其中一个标签时,如何自动从所有打开的标签中注销用户?

如何在会话超时或结束时注销用户

会话 Cookie,自动注销

使用 Angularjs 和 Laravel 注销会话过期

在注销期间破坏用户会话是不是足够?