Где переменные сессии хранятся в Rails? - PullRequest
19 голосов
/ 06 сентября 2011

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

Ответы [ 3 ]

20 голосов
/ 06 сентября 2011

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

16 голосов
/ 06 сентября 2011

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

6 голосов
/ 02 сентября 2017

В 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, она зашифрована .
  • Чтобы злые люди не могли подделать куки, используется цифровая подпись .

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

...