Не могу понять сессий в Rails - PullRequest
0 голосов
/ 30 апреля 2010

Пожалуйста, не кусайте меня за мое недоразумение. Сессии для меня очень новые, и у меня есть некоторые проблемы.

Хорошо, я прочитал много информации о сессиях и особенно о сессиях рельсов. Но это не дает мне правильного представления о сессиях.

Правильно ли я понял, когда пользователи отправляют запрос на сервер (get) -> Сервер создает новый сеанс (и сохраняет этот какой-то файл на жестком диске с идентификатором сеанса), идентификатор сеанса -> это случайный сгенерированный номер? Итак, сервер создает новый сеанс (и сохраняет сеанс на диске) после того, как этот сервер отправит ответ клиенту обратно, и установит session_id в файлах cookie?

Хорошо, я отлаживаю некоторые параметры и вижу некоторые результаты:

отладки (сессия):

{:_csrf_token=>"jeONIfNxFmnpDn/xt6I0icNK1m3EB3CzT9KMntNk7KU=", :session_id=>"06c5628155efaa6446582c491499af6d", "flash"=>{}}

отлаживать (печенье):

{"remember_user_token"=>"1::3GFRFyXb83lffzwPDPQd", "_blog_session"=>"BAh7CDoQX2NzcmZfdG9rZW4iMWplT05JZk54Rm1ucERuL3h0NkkwaWNOSzFtM0VCM0N6VDlLTW50Tms3S1U9Og9zZXNzaW9uX2lkIiUwNmM1NjI4MTU1ZWZhYTY0NDY1ODJjNDkxNDk5YWY2ZCIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7AA==--348c88b594e98f4bf6389d94383134fbe9b03095"}

Хорошо, я знаю, что _csrf_token помогает предотвратить csrf. session_id -> это идентификатор сеанса, который хранится на жестком диске (по умолчанию)

а что такое _blog_session в файлах cookie? Кроме того, Rememberber_user_token содержит мой идентификатор (1 :: *) и что насчет второй части, что это такое?

Извините за эти глупые вопросы, я знаю, что я могу легко использовать любые хорошие плагины аутентификации (authlogic / оформление / разработка), но я хочу полностью понять сессий.

Спасибо.

(также извините за мой английский, это не мой родной язык)

1 Ответ

1 голос
/ 30 апреля 2010

remember_user_token, вероятно, установлен вашим плагином аутентификации, это зашифрованная строка, которая хранится в таблице пользователей и используется для его аутентификации. Детали могут варьироваться между плагинами.

Вторая часть: вы, вероятно, используете хранилище сеансов на основе файлов cookie (по умолчанию),

Итак, _blog_session хранит ваши зашифрованные данные сеанса. Подробнее о сеансах на основе файлов cookie здесь и здесь .

Имя "_blog_session" задается в config / initializers / session_store.rb

Похоже:

# Your secret key for verifying cookie session data integrity.
# If you change this key, all old sessions will become invalid!
# Make sure the secret is at least 30 characters and all random, 
# no regular words or you'll be exposed to dictionary attacks.
ActionController::Base.session = {
  :key         => '_blogs_session',
  :secret      => '07fb6f0d41af4ae06aebb1696fcbb5a5398d4a08570744a4cd53ff237020c43a2022b4041d617d95bcf3f5c4601c7e6c1646eecfc157cc200e7dfedd7d7c6813'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...