セッションの仕組み
HTTP はステートレス プロトコルです。これは、通信が要求と応答の独立したペアで構成されるように、各要求を以前の要求とは無関係の独立したトランザクションとして扱うことを意味します。
ステートレス プロトコルでは、サーバーが複数の要求の間、各通信パートナーに関するセッション情報またはステータスを保持する必要はありません。
このプロトコルは、リクエスト間でユーザーのデータを保存する手段を提供しません。
したがって、 を使用しますSessions
。これにより、複数のリクエストをクライアントとサーバー間の会話に連鎖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
の両方のためにデータをできるだけ小さく保つことをお勧めします。
アップデート
デフォルトでsession data
は として保存されますcookies
が、 を使用してデータベースRails
に構成したり、とを使用してメモリ内ストレージに構成したりできます。それぞれのアプローチには長所と短所があります。session storage
ActiveRecordStore
Redis
Redis store