Rails 5 - не могу проверить подлинность токена CSRF - только иногда - PullRequest
1 голос
/ 12 октября 2019

У меня есть приложение на Rails 5, и я использую форму для отправки данных. Я использую защиту CSRF, и форма создает скрытое поле 'authenticity_token'. Отлично работает!

Но иногда пользователь получает и ошибку 'Can't verify CSRF token authenticity'. И мне интересно, почему это происходит? Я могу только представить, что у пользователя отключены куки. Но какой обычный интернет-пользователь это делает? Есть ли другие причины?

Я не могу воспроизвести эту ошибку на моем компьютере. Поэтому единственное решение, которое у меня есть, - отключить защиту от CSRF, а это не совсем то, что я хотел бы сделать.

Есть идеи?

1 Ответ

0 голосов
/ 12 октября 2019

Can't verify CSRF token authenticity приводит к 500 Internal Server.

Мне интересно, почему это происходит? Я могу только представить, что у пользователя отключены куки. Но какой обычный интернет-пользователь это делает? Есть ли другие причины?

Да, это происходит. Или, может быть, пользователь (или хакер) пытается сделать запрос API к конечной точке, и, поскольку он не может проверить токен аутентификации, он выдаст эту ошибку. Обычный пользователь не делает этого, но, возможно, кто-то, кто ценит их конфиденциальность и может отключить эти настройки, или, возможно, они хотят использовать браузер Tor и так далее. Как разработчики, все, что мы можем сделать, - это попытаться предоставить конечному пользователю наилучший возможный опыт.


Итак, лучше отловить ошибку 500 Internal Server в каком-либо настраиваемом сообщении, а затем отобразить ее дляконечный пользователь, также отправляя Stack trace себе (слабое уведомление и т. д.), чтобы вы могли работать, если это критическая проблема.

Таким образом, если все хорошо со стороны пользователя, это будет работатькак обычно. Но если кто-то отключает файлы cookie (или что-либо, что приводит к некоторой ошибке), вы можете отобразить собственное сообщение о проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...