Где хранятся переменные сеанса в Rails?

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

Ответы

Ответ 2

По умолчанию рельсы используют файлы cookie для хранения данных сеанса. Все данные хранятся в клиенте, а не на сервере.

Ответ 3

В Rails объект сеанса отправляется туда и обратно внутри файлов cookie.


Когда вы устанавливаете session[:user_id] = 3 внутри действия вашего контроллера, ответ, отправленный из этого действия, будет иметь заголовок Set-Cookie: my-session-cookie. С этого момента браузер автоматически отправит заголовок Cookie: my-session-cookie обратно на сервер по каждому запросу.

Вот как обычно выглядит файл my-session-cookie:

_Hello_session=BAh7B0kiD3%3D%3D--dc40a55cd52fe32bb3b84ae0608956dfb5824689

что означает:

_Hello_session=<encrypted user_id=3>--<digital signature>
  • Hello - это имя вашего приложения Rails.
  • Чтобы предотвратить злых людей от понимание a=b string, зашифровано.
  • Чтобы предотвратить зло люди из подделок cookie, цифровая подпись.

И шифрование (и дешифрование), и подписание (и проверка) выполняются с использованием секретного ключа на стороне сервера secrets.secret_key_base, хранящегося в /config/secrets.yml.