Как работает сессия?
HTTP является лицом без protocol.It означает, что он рассматривает каждый запрос в качестве независимой сделки , которая не связана с любым предыдущим запросом так, что сообщение состоит из независимых пар запросов и ответов.
без гражданства протокол не требует серверов сохранить сеанс информацию или статус каждого коммуникационного партнера на протяжении нескольких запросов.
Протокол не предоставляет никаких средств для хранения данных пользователя между запросами.
Поэтому мы используем Sessions
, что позволяет нам цепи несколько запросов вместе в разговоре между клиентом и сервером, поэтому temporaly держать data
.
Session
является hash
, так что вы можете добавить данные в сессию, как в обычный хэш:
Например, чтобы добавить новый заказ в сеанс может выглядеть следующим образом:
например OrdersController
def new
@order = current_user.orders.create # creates a new order for current_user
session[:order] = @order.to_params # adds order information to the session.
end
Сессии могут хранить любой вид string
данных, но лучше всего, держа его как можно как для скорости и безопасности, поскольку сторонние пользователи могут легко расшифровать, какая информация хранится в сессий.
UPDATE
по умолчанию session data
сохраняются как cookies
но Rails
позволяет конфигурировать session storage
в базе данных с использованием ActiveRecordStore
или InMemory хранения с Redis
и Redis store
. Каждый подход имеет свои преимущества и недостатки.
Что значит печать значения сеанса? Это не то, что я делаю puts session – Nox
Я хочу сказать, что используйте 'puts session ['something']' вместо просто 'puts session'. – jurglic