2
1

More than 3 years have passed since last update.

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

Posted at

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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1