Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день.
У меня вопрос, как обрабатывать подобные ошибки:
- После окончания сессии и при открытом приложении, пользователь вернулся к компу, нажимает на кнопку, которая должна отправть post запрос и выдается ошибка TokenMismatchException in VerifyCsrfToken
- То же самое и при отправке какого-нибудь ajax-запроса в открытом приложение, но с окончившейся сессией. Для пользователя никаких действий соответственно не происходит и начинается ступор.
Как правильно будет делать редирект на / или какой-то другой вариант обработки таких ситуаций. Спасибо
Не в сети
я в одном из проектов просто сделал обработчик который с определённым интервалом шлёт аякс-запросы на /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);
Не в сети
я в одном из проектов просто сделал обработчик который с определённым интервалом шлёт аякс-запросы на /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);
Спасибо за ответ).
А разве сам скрипт не будет при обращение к серверу искусственно продлевать сессию?
Не в сети
а я кстати не помню как по умолчанию в ларавеле сделано. может быть и так и эдак. в любом случае в моём проекте это не проблема, даже плюс. проблема – это если человек загнал ноут в сон или в телефоне переключился с браузера на другое приложение – а потом обратно и пытается что-то делать на сайте. в этом случае после возврата из сна скрипт сделает запрос и если сессия закончилась – сразу перекинет пользователя на авторизацию. просто и работает
Не в сети
Согласен, принцип работы подходит и мне. Благодарю
Не в сети
Страницы 1