我在Laravel非常陌生。我已将javascript用于自动注销功能。问题是当我切换产生问题的帐户时。情况如下:
因此,现在您可以作为服务提供商登录,而无需从超级管理员帐户注销。在这种情况下,显示419个未知状态并重新加载页面的ajax调用将从该帐户注销。
我确实搜索了419个未知状态,但是所有这些都显示了传递CSRF令牌的相同解决方案。就我而言,我已经通过了,但仍然只有在切换帐户时才会显示错误。
真的需要一些解决方案。预先感谢。
以下是我的自动注销代码:
layout / app-inside.blade.php
<script>
var sesnLifeTime = 10 * 60;
var logtime = "{{strtotime(Session::get('logtime'))}}";
var lastActvTime = logtime;
$( "body" ).bind( "mousemove", function() {
var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');
var stillUtc = moment.utc(date).toDate();
var nowDateTime = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');
var nowDateTimestamp = moment(nowDateTime).format("X");
lastActvTime = nowDateTimestamp;
});
document.addEventListener("DOMContentLoaded", function (event) {
setInterval(function(){
var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');
var stillUtc = moment.utc(date).toDate();
var nowDateTime = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');
var nowDateTimestamp = moment(nowDateTime).format("X");
var idleTime = parseInt(nowDateTimestamp) - parseInt(lastActvTime);
if(idleTime >= sesnLifeTime)
{
$('#myModal').modal('show');
console.clear();
console.log("idleTime ==== "+idleTime);
}
else
{
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
url: '/dashboard.setTime',
type: 'POST',
async: false,
data:{'lastActvTime': nowDateTime},
success: function(response) {
console.log(response+"===="+idleTime);
}
});
}
}, 5000);
});
</script>
上面的ajax是从follwong控制器调用的。
DashboardController
function setTimeAjax(Request $request) {
$lastActvTime = $request->lastActvTime;
//== storing and fetching the updated time into session ==//
$request->session()->put('logtime', $lastActvTime);
$data = $request->session()->all();
//== storing and fetching the updated time into session ==//
$logtime = $data['logtime'];
echo $logtime.'===='.$lastActvTime;
}
我每5秒检查一次用户活动。因此,当我切换帐户时,不要注销我的帐户,而应保持登录状态,因为我是活动用户。