Ответ 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.

Если у кого-то есть лучшее решение, которое не требует повторного вызова, я буду рад услышать об этом.

Другие вопросы по тегам