【问题标题】:How to logout open browser windows如何注销打开的浏览器窗口
【发布时间】:2019-12-10 13:28:14
【问题描述】:

我有一个 javascript/node 应用程序,它使用 cookie 对站点的用户进行身份验证。即使用户的浏览器窗口仍然打开,我也需要能够注销用户。

我可以使他们的 cookie 在服务器上无效...但这不会将他们注销,直到他们单击站点中的某个链接或关闭他们的浏览器窗口。即使他们的浏览器窗口仍然打开,我也需要能够立即将他们踢出网站。有什么想法吗?

【问题讨论】:

    标签: javascript session cookies session-cookies logout


    【解决方案1】:

    如果您使他们的 cookie 在服务器上无效,则只需强制使用window.location.reload() 进行刷新。这是与此相关的SO question

    这是我目前在我的一个项目中使用的示例:

    if(getCookie("id") == ""){
        window.location.href = "login";
    }
    

    将它放在每个页面的正文标记之后。 然后当你使 cookie 过期时...

    expireCookie("id");
    window.location.reload();
    

    由于您基本上删除了 cookie,第一个脚本现在会将用户重定向到登录页面。

    【讨论】:

    • 是的,这就是问题所在。如何在一天中的某个时间强制刷新。或按需提供。
    • 我在想我可以使用 Cron 作业在一天中的正确时间执行 .js 脚本...强制刷新...但不确定如何制作脚本在正确的时间在网页上运行....
    • @KennyJohnson 我会查看stackoverflow.com/questions/4455282/…,但不是警报,而是重新加载。至于按需,只需创建一个使 cookie 过期并强制重新加载的函数,当您需要调用该情况时,触发该函数。
    • 谢谢。我实际上看到了一个,但不确定它是否是一个好的解决方案,因为它依赖于用户计算机的系统时间。正确的?如果用户的系统时间错误,那么该功能将不会在我想要的时候触发......或者我错过了什么?感谢您的宝贵时间!
    • 你说得对,肯尼。我在stackoverflow.com/questions/53005544/… 中找到了一点帮助,但没有很好的解决方案。为了找到更好的解决方案,为什么需要在特定时间注销用户?
    【解决方案2】:

    您需要 3 样东西:鼠标移动和键盘操作、计时器、注销重定向。

    • 检查鼠标移动和键盘操作;
    • 如果没有活动,则启动计时器;
    • 当时间结束时,您将用户重定向到注销 url;

    【讨论】:

      【解决方案3】:

      我不明白你是想在一段时间后重定向他们还是在他们注销后重定向他们。

      如果您想在一段时间后结束会话,您可以设置 cookie 的 maxAge 以保持您希望用户能够与您的网站交互的最长时间。 这是一篇关于maxAgeexpires的文章:HTTP Cookies: What's the difference between Max-age and Expires?

      另外,您可以设置一个设置超时的函数,接下来,如果您有类似Express-sessionspassaport 的内容,您可以使用 logout()。但我不推荐这个。我认为最好设置 cookie 的 maxAge 并让 vainilla 尽力而为。

      在任何情况下,您都可以在路由中使用一些帮助程序来检查是否存在活动会话。这样,如果 cookie 有 caducate,您就可以重定向它们。

      对不起我的英语:)

      【讨论】:

        【解决方案4】:

        您可以尝试设置websocket 连接。 Websocket 基本上是不需要长轮询的双工通道。从本质上讲,它们只在需要完成某事时才在两端进行通信。对于您的情况,websocket 连接的客户端将侦听来自服务器的特定消息,然后应用程序将对这些更改做出反应;在您的情况下,它可能会强制注销。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-18
          • 1970-01-01
          • 1970-01-01
          • 2015-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多