Ответ Rails 403 на сеанс истек при использовании protect_from_forgery
После окончания сеанса пользователя при создании POST
или же PUT
запрос к любому контроллеру, который имеет protect_from_forgery
сервер отвечает 403 вместо ожидаемых 401 для вышедших из строя пользователей.
Когда контроллер возвращает код 401, клиент перенаправляет пользователя обратно на экран входа в систему.
Я не хочу перенаправлять на каждый 403, я не выгоняю пользователей, если их сеанс не истек.
Я попытался погуглить и поигрался с разными флагами, как описано в документе, без какой-либо удачи. Как я могу заставить protect_from_forgery возвращать 401, когда сессия истекла?
1 ответ
Я не мог найти правильное решение для этого, поэтому я использовал следующий хак:
На стороне клиента, когда сервер возвращает ошибку 403, я немедленно делаю GET
запрос к конечной точке API, которая возвращает 200, если сеанс существует (пользователь вошел в систему) и 401 в противном случае.
У меня уже была логика на стороне клиента для перенаправления пользователя на страницу входа при любых ошибках 401.
Если у кого-то есть лучшее решение, которое не требует повторного вызова, я буду рад услышать об этом.