несоответствие токена csrf после долгого времени - PullRequest
0 голосов
/ 10 июля 2019

У нас есть пользовательская модель всплывающего окна входа. Мы кликаем по логину, после чего появляется всплывающее окно. Генерируется csrf-токен, но когда он ничего не делает, через некоторое время происходит несоответствие токена. И бросает исключение. Мне нужна идея, чтобы обновить токен через некоторое время, иначе он никогда не истечет.

Можете ли вы помочь мне?

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Чтобы обновить токен в определенное время, вы можете сделать это следующим образом:

<html>
<head>
    <title>My website </title>
</head
<body>
<form method="POST" action="#">
    <input type="hidden" name="_token" id="csrf-token" value="{{ csrf_token() }}" />
</form>
    <script type="text/javascript">
        var csrfToken = $('#csrf-token').val();

        setInterval(refreshToken, 3600000); // 1 hour 

        function refreshToken(){
            $.get('refresh-token').done(function(data){
                csrfToken = data; // the new token
            });
        }

        setInterval(refreshToken, 3600000); // 1 hour 

    </script>
</body>
</html>

В вашем файле маршрутов:

Route::get('refresh-token', function(){
    return csrf_token();
});

Использованный источник: https://stackoverflow.com/a/31451123/3963382

0 голосов
/ 10 июля 2019

Время сеанса по умолчанию составляет 120 минут и может быть настроено с помощью SESSION_LIFETIME в файле .env.

Вы можете сделать одно из следующих действий:

a) установить SESSION_LIFETIME до очень большого числа, например 35791394 (68 лет)
b) когда пользователь открывает веб-сайт, запустите таймер JavaScript, который обновляет страницу через SESSION_LIFETIME минут

...