【问题标题】:how to refresh browser tabs when a user is logged out用户注销时如何刷新浏览器选项卡
【发布时间】:2014-08-27 10:29:07
【问题描述】:

当登录的用户打开两个选项卡并从任何一个打开的选项卡中注销时,我该如何处理这种情况。我需要让其他浏览器选项卡知道用户已注销。并拒绝来自客户端本身的用户的任何其他请求。

我正在使用 PHP/Kohana

【问题讨论】:

  • 你不需要这样做。您的责任不是控制用户的浏览器或浏览偏好。如果用户在第一个选项卡中退出,他在第二个选项卡执行的任何操作都应该并且必须确定他们没有登录并且无法继续。

标签: php kohana kohana-3.3


【解决方案1】:

虽然I mostly agree with N.B.(“你可能不需要做任何事情”),但我可以想到几个选项:

  • 您的页面可以轮询您的服务器并检查会话状态。
  • 您的注销页面可能会更新a cookiethe Local Storage。其他页面会轮询此位置而不是您的服务器。

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点。 一个 if 使用 Kohana 请求重定向路由 两个使用javascript检查和重新加载。

    【讨论】:

    • 您能否提供更多关于第一个选项的信息?
    【解决方案3】:

    使用 kohana 方式可能很简单。在您正在扩展或使用的主控制器中,使用 before 函数,您将在其中确定用户是否已登录并在是否登录时采取一些措施。 只需使用 kohana Auth 模块登录用户,例如:

    Auth::instance()->login($username, $password);
    

    然后 kohana 会自动将该用户保存为已登录。 你之前的函数应该包含类似的内容:

    if (!Auth::instance()->logged_in())
    {
        //redirect to login page
    }
    

    这样您将在用户尝试打开其他页面时检查用户是否已登录。 如果你也在使用 ajax,那也应该以同样的方式应用于主 ajax 控制器。

    然后注销用户使用:

    Auth::instance()->logout();
    

    【讨论】:

    • 我目前正在使用这种方法,但 kohana auth 认为即使在用户使用浏览器下的不同选项卡注销后用户仍处于登录状态。
    • 嗯...你在使用 Auth::instance()->logout();注销用户?如果是,您是否还确定在该页面上调用 before 方法对您不起作用?值得检查或只显示您的代码...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-18
    • 2012-08-19
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多