Ответ 1
Основываясь на моей интерпретации кода, кажется, что:
-
null_session
следует использовать в контроллерах API-интерфейса, где вы не можете использовать для объекта сеанса. Это похоже на подходящее решение для вашего приложения Angular. Предсуществующий сеанс пользователя (т.е. Установленный другими традиционными контроллерами) останется неповрежденным. Это также поведение по умолчанию, если вы не указываете опциюwith
наprotect_from_forgery
. -
reset_session
предназначен для традиционных контроллеров. Когда проверка CSRF завершается неудачно, он сообщает Rails о том, чтобы сбить сеанс пользователя и продолжить обработку запроса. Это звучит как "параноидальный режим", в котором вы хотите вывести пользователя из своего приложения, если есть какие-либо доказательства вмешательства в запрос.
Если ваше приложение Rails вообще не использует сеансы, они являются взаимозаменяемыми.
Однако, если вы используете сеансы в некоторых частях вашего приложения, а не другие (т.е. сочетание традиционных и API-контроллеров), то null_session
, вероятно, вы должны использовать. В противном случае, если вы используете reset_session
, запрос API, сделанный браузером, приведет к тому, что пользователи будут выходить из сеанса браузера.