Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 19.03.2017 21:21:31

Обработка VerifyCsrfToken

Добрый день.
У меня вопрос, как обрабатывать подобные ошибки:
- После окончания сессии и при открытом приложении, пользователь вернулся к компу, нажимает на кнопку, которая должна отправть post запрос и выдается ошибка TokenMismatchException in VerifyCsrfToken
- То же самое и при отправке какого-нибудь ajax-запроса в открытом приложение, но с окончившейся сессией. Для пользователя никаких действий соответственно не происходит и начинается ступор.

Как правильно будет делать редирект на / или какой-то другой вариант обработки таких ситуаций. Спасибо

Не в сети

#2 20.03.2017 06:04:41

Re: Обработка VerifyCsrfToken

я в одном из проектов просто сделал обработчик который с определённым интервалом шлёт аякс-запросы на /token – в ответ ему приходит текущий токен и статус авторизации – то есть если сессия заканчивается пользователь сразу перекидывается на страницу логина. кроме того я сразу же таким образом отслеживаю кто сейчас есть на сайте (запросы идут каждые 10 минут). пришедший токен сразу кладётся в meta[name='csrf-token'] и потом на формах и аякс-запросах подхватывается автоматом

/resources/assets/js/token.js:

(function ($, document, window) {
    "use strict";

    setInterval(function () {

        $.post('/token').then(function (res) {

            if (res === null) {
                return;
            }

            if (res.result !== 'success') {
                return;
            }

            if (!res.is_auth && $('html').data('noAuth') == null) {
                location.href = '/';
                return;
            }

            if (res.token != null) {
                $('meta[name=csrf-token]').attr('content', res.token);
                $.rails.refreshCSRFTokens();
            }
        });

    }, 600000)

})(jQuery, document, window);

Не в сети

#3 21.03.2017 13:17:27

Re: Обработка VerifyCsrfToken

constb пишет:

я в одном из проектов просто сделал обработчик который с определённым интервалом шлёт аякс-запросы на /token – в ответ ему приходит текущий токен и статус авторизации – то есть если сессия заканчивается пользователь сразу перекидывается на страницу логина. кроме того я сразу же таким образом отслеживаю кто сейчас есть на сайте (запросы идут каждые 10 минут). пришедший токен сразу кладётся в meta[name='csrf-token'] и потом на формах и аякс-запросах подхватывается автоматом

/resources/assets/js/token.js:

(function ($, document, window) {
    "use strict";

    setInterval(function () {

        $.post('/token').then(function (res) {

            if (res === null) {
                return;
            }

            if (res.result !== 'success') {
                return;
            }

            if (!res.is_auth && $('html').data('noAuth') == null) {
                location.href = '/';
                return;
            }

            if (res.token != null) {
                $('meta[name=csrf-token]').attr('content', res.token);
                $.rails.refreshCSRFTokens();
            }
        });

    }, 600000)

})(jQuery, document, window);

Спасибо за ответ).
А разве сам скрипт не будет при обращение к серверу искусственно продлевать сессию?

Не в сети

#4 21.03.2017 14:26:59

Re: Обработка VerifyCsrfToken

а я кстати не помню как по умолчанию в ларавеле сделано. может быть и так и эдак. в любом случае в моём проекте это не проблема, даже плюс. проблема – это если человек загнал ноут в сон или в телефоне переключился с браузера на другое приложение – а потом обратно и пытается что-то делать на сайте. в этом случае после возврата из сна скрипт сделает запрос и если сессия закончилась – сразу перекинет пользователя на авторизацию. просто и работает

Не в сети

#5 21.03.2017 14:34:35

Re: Обработка VerifyCsrfToken

Согласен, принцип работы подходит и мне. Благодарю

Не в сети

Подвал раздела