【发布时间】:2018-07-05 10:04:16
【问题描述】:
最近遇到了这个问题。场景是,假设我打开了两个选项卡(A 和 B),我使用 Tab A 登录验证重定向到主页。然后选择一个链接而不是直接输入,我右键单击并选择“在新选项卡中打开链接”,从而拥有 Tab B。此时我开始导航 30 分钟会弹出一个警报,提示我“会话已完成。请重新登录。”。我没有被重定向到登录页面,而是被重定向到主页。 (必须为 Tab A 发出警报)
如果我只处理一个选项卡,这不是警报后的问题,我会直接进入登录页面。
我有两组代码,一组处理实际会话到期,另一组发出警报。
此代码用于警报:
function idleLogout() {
var t;
window.onload = resetTimer;
window.onmousemove = resetTimer;
window.onmousedown = resetTimer;
window.onclick = resetTimer;
window.onscroll = resetTimer;
window.onkeypress = resetTimer;
function logout() {
alert("Session has been finish. Please login again.");
window.location.href = '{{url("")}}';
}
function resetTimer() {
clearTimeout(t);
t = setTimeout(logout, {{ env('SESSION_LIFETIME')*60*1000 }} );
}
}
idleLogout();
代码按预期工作,但可以更好地实现。
顺便说一句,如果使用 PHP Laravel 5 很重要
【问题讨论】:
-
不同窗口(选项卡)之间通信的几种方式是 postMessage API 和存储事件
标签: javascript php session authentication