如何在用户注销时刷新浏览器选项卡


how to refresh browser tabs when a user is logged out

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

我使用的是PHP/Kohana

虽然我基本上同意N.B.("你可能什么都不需要做"),但我可以想到几个选项:

  • 您的页面可以轮询服务器并检查会话状态
  • 您的注销页面可能会更新cookie或本地存储。其他页面会轮询此位置,而不是您的服务器

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

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

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

然后kohana会自动将该用户保存为已登录用户。你之前的函数应该包含这样的东西:

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

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

然后注销用户使用:

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