Автоматический выход из системы не работает при смене аккаунта, проблема в вызове ajax - PullRequest
0 голосов
/ 10 июля 2019

Я очень новичок в Laravel. Я использовал javascript для автоматического выхода из системы. Проблема в том, когда я переключаю учетную запись, которая создает проблему. Сценарий таков:

  • Вы вошли как Суперадмин
  • После входа в систему появляется список ServiceProvider. Нажатие на него будет олицетворять их, и данные сеанса будут заменены на этого поставщика услуг.

Итак, теперь вы вошли как поставщик услуг без выхода из учетной записи superadmin. В этом случае вызов ajax, показывающий 419 неизвестное состояние и перезагружающий страницу, выходит из этой учетной записи.

Я выполнил поиск этого неизвестного статуса, но все они показывают одно и то же решение для передачи токена CSRF. В моем случае я уже передаю его, но, тем не менее, он показывает ошибку только при переключении учетной записи.

Действительно нужно какое-то решение по этому вопросу. Заранее спасибо.

Ниже приведен мой код автоматического выхода из системы:

макет / приложение-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 секунд. Поэтому, когда я переключаю учетную запись, вместо того, чтобы выходить из системы, она должна оставаться в системе, поскольку я являюсь активным пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...