可以有2种方法解决,php可以,js也可以,但是php有弊端,就是如果没有网络请求才算是没有操作;所以这里推荐用js的方法。
js解决方法:
修改文件路径:
application/admin/view/common/script.html
把下面这段复制到最下面即可(记得把里面的5s改成5分钟哈)
代码:
<script>
top.window.logoutTime = 5*1000; // 5s,单位为毫秒
console.log('logoutTime: ', top.window.logoutTime);
if(typeof top.window.logoutTimer == 'undefined'){
top.window.logoutTimer = null
}
function clearAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/;";
}
}
function logout() {
// 执行退出操作,例如跳转到退出登录页面
clearAllCookies()
setTimeout(() => {
let h = '/'+location.pathname.split('/')[1]+'/index/login'
console.log('h: ', h);
top.window.location.href = h;
}, 50);
}
function startLogoutTimer() {
top.window.logoutTimer = setTimeout(logout, top.window.logoutTime);
}
function resetLogoutTimer() {
clearTimeout(top.window.logoutTimer);
startLogoutTimer();
}
// resetLogoutTimer()
window.addEventListener('mousemove', resetLogoutTimer);
window.addEventListener('keydown', resetLogoutTimer);
window.addEventListener('mouseout', function(event) {
// 鼠标离开了当前框架
// console.log("鼠标离开了当前框架");
clearTimeout(top.window.logoutTimer)
});
window.onfocus = function() {
// console.log('获取到焦点',location.href);
resetLogoutTimer()
};
window.onblur = function() {
// 在窗口失去焦点时执行的代码
// console.log('失去焦点',location.href);
resetLogoutTimer()
};
</script>
php解决方法:
这需要修改session的底层逻辑,打开如下文件
thinkphp/library/think/Session.php
把下面代码加在boot里,修改里面的10为300即可(10是一个测试时间,10秒钟自动退出)
Comments