Webストレージ
- ローカルストレージ(ブラウザを閉じても残る)
- ずっと保存したい(情報を与えっぱなしみたいな??)
- セッションストレージ(サーバー関係ない。ブラウザを閉じると消える)
🍪ストレージ(ブラウザを閉じても残る)
- サーバーにデータを飛ばせる(サーバー側からも取得したい値)
この辺のデータはブラウザ / ドメインの中で完結している。
サーバーレスとかいうのはローカルストレージとかそのへんを使えばできるのか??
データをとりあえず保存している
レスポンスヘッダのSet-Cookieヘッダからname, valueを渡す。これは何でも渡せる。
ブラウザ「おー、これをクッキーに入れとけばええんか」
セッション
あなたはだあれ??「おいおいさっき会っただろー俺だよ俺」
同一であることを確認!
- ブラウザ
- Cookieストレージの中のSessionID(value)に保存する
- サーバー
- SessionIDを見て「あ、あのときのお前かあ」
セッションテーブルはセッションIDからユーザーIDを特定するためのもの!session_idとuser_idを紐付ける
サーバー「このセッションidを持つお前は〇〇だな / 登録していないから知らねえわ」(名前は知らないけど、さっき見たお前だな、っていうのはわかる)
保存の仕方
- cookie_store(railsのデフォルト)
- クッキーにテーブルの情報(セッションIDもユーザーIDも)が全部はいってるよ(だって入れる場所がないんだもん)
- redis
- クッキーでセッションIDだけ扱う。他のデータはredisで持つ(これなら漏れても安全)
以下はcookie_storeの話↓
だから、session
(ブラウザのCookieの対応するkeyのvalue: sessionのデータ)を取得するとめっっちゃいろいろデータが入っている。
session[:user_id]
っていうのはその中のuser_id
を取得しているだけ(他のデータの取り方と変わらない)
で、session[:hoge] = 'foo'
とかで値を入れることも可能
クッキーストアだと、そもそも情報全てをブラウザ側に持たれてしまうので、サーバー側からログアウトさせるということができない
サーバーでセッションを管理していると、セッションテーブルを削除することで強制ログアウトさせることができる
ブラウザの🍪はブラウザを閉じても保存される(付与するときに期限を決めておくことはできる)
初回だけ出るポップアップとかも🍪を使って実現できる