【问题标题】:Is it necessary to clear all cookies manually in frontend when a user logs out用户注销时是否需要在前端手动清除所有cookie
【发布时间】:2019-08-07 21:48:17
【问题描述】:

如果用户登录后无法访问服务器,是否需要在用户注销时在前端手动清除所有cookie?

有人告诉我,我所要做的就是在服务器上跟踪 cookie。这让我很困惑。我将登录会话cookie的过期时间设置为较长时间(3个月),因此用户无需每天输入密码。但这意味着一旦用户注销失败并忘记手动清除 cookie,下一个使用该计算机的人将拥有我真正用户的所有权利。

【问题讨论】:

    标签: javascript session cookies


    【解决方案1】:

    如果您担心用户使用公共计算机,那么您可以安装一个进程来跟踪用户连接的 IP 地址,因此如果有新 IP,请询问用户是他们的计算机还是一个公共的,如果他们的则设置 3 个月到期,如果它是公共的,则将其更改为 10-15 分钟或在他们关闭浏览器或类似的东西时到期。因为就像提到的 @Ravishankar-s-r 一样,它必须在服务器端进行管理,这是 cookie 得到验证(接受/拒绝)的地方。

    【讨论】:

    • 我提出这个问题是因为我在比较基于 cookie 的身份验证和基于 jwt 的身份验证。而且我发现基于 jwt 的身份验证完全不是问题。因为当用户注销时,前端会清除他们的令牌。
    • 是的,但是如果有人要在公共计算机上安装 cookie 跟踪器/记录器,那么如果会话未在服务器端关闭,他们将获得访问权限。
    • 我认为防止跟踪器/记录器存在是浏览器的责任。
    【解决方案2】:

    不,不需要清除浏览器上的 cookie。 Cookie 必须在服务器端进行管理。即使 cookie 在用户注销后出现在前端。这是一个无效的 cookie,因为您在用户注销时删除了服务器端的 cookie 会话。

    【讨论】:

    • 当客户端请求注销时,如果服务器端无法访问(由于网络原因或其他原因)怎么办。
    • 在这种情况下会话不会被终止,cookie 在服务器中过期之前仍然有效。
    猜你喜欢
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    • 2021-09-26
    相关资源
    最近更新 更多