Sessionはブラウザを閉じると消去されるように設計されたCookieであり、それをやり取りするメソッドだった: Railsチュートリアル備忘録 - RailsのSessionとは?


Sessionはブラウザを閉じると消去されるように設計されたCookieであり、それをやり取りするメソッドだった: Railsチュートリアル備忘録 - RailsのSessionとは?

Abstract: RailsのSessionとは

Progateのころから気づけば隣にいたsession

Railsチュートリアルを進めていくと

セッションとかいう変数みたいなものと
それを補足するCookieを利用したログイン維持の仕組み
というモヤモヤした感じを抱いていたが実際は

どちらも

  • HTMLをステートフルにするための仕組み
  • デフォルトではどちらもCookieに保存される

ただし

  • sessionはRailsが実装してくれていたのに対して, Cookieによるログイン維持は後から実装した
  • sessionは期限あり(デフォルト?)に対して, 後者は永続的(意図的に設計した)

期限付きCookieを利用した
セッションというHTMLをステートフル化するための仕組みを
開発者が意図することなく実装してくれていたのがRailにおけるsessionメソッドということかと

備忘録: RailsのSessionとは

本来HTMLはステートレスであり、連続性保続性がない

一瞬でわかるステートレス
DIVE INTO CODE | ログイン情報保持について学ぼう

SessionはステートレスなHTMLを、ステートフルにするための仕組み

そっか、Cookie*みたいな*仕組みか
Railsチュートリアルの 8章でやりました

と思ったら、
そもそもRailsはデフォルトでsessionをCookieに保存しているとのこと

Chromeのデベロッパーツールで確認してみたところ
Railsチュートリアルのsample_app用と思われる_sample_app_sessionがあります

さらにその有効期限は”ブラウザ セッションの終了時”となっており
Railsチュートリアルで刷り込まれた儚い感じの所以はこれでした

Railsにおけるsessionは?

sessionは変数ではなくメソッドとのこと
rails new sample_appのプロセスで自動的に生成されていたので

ものすごく当たり前のように使えていたと理解した

たとえば、Rails がインストールされた状態でrails new hogeすると Rails アプリケーションができあがって、hogeディレクトリ内でrails g controller sessionsすると ApplicationController を継承した SessionsController が生成されますが、はじめからsession[:hoge]といった書き方で session を利用することができます。Rails の session を完全に理解した - Qiita

もう少し簡単にRailsのsessionの実態を理解するのにこちらを参考にしました
【Rails】Sessionの使い方について - Qiita