Suche senden
Hochladen
Session管理とRailsのcookie store
•
6 gefällt mir
•
4,913 views
K
Kamimura Taichi
Folgen
ログイン機能を支えるsession管理の話と、Railsのcookie storeの話です。ステートフル・ステートレスの話が出てきます。
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 99
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
DI(依存性注入)について
DI(依存性注入)について
Yui Ito
ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎とクラス設計への応用
nagise
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
SPAのルーティングの話
SPAのルーティングの話
ushiboy
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
Empfohlen
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
DI(依存性注入)について
DI(依存性注入)について
Yui Ito
ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎とクラス設計への応用
nagise
SpringBootTest入門
SpringBootTest入門
Yahoo!デベロッパーネットワーク
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
SPAのルーティングの話
SPAのルーティングの話
ushiboy
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!ニュースにおけるBFFパフォーマンスチューニング事例
Yahoo!デベロッパーネットワーク
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
目grep入門 +解説
目grep入門 +解説
murachue
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
Naohiro Fujie
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
Vuejs meetup
Vuejs meetup
Kamimura Taichi
ruby 関数化のメリット
ruby 関数化のメリット
Kamimura Taichi
Weitere ähnliche Inhalte
Was ist angesagt?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
naoki koyama
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
yoku0825
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
目grep入門 +解説
目grep入門 +解説
murachue
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
Masaya Tahara
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Shota Shinogi
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Hiroyuki Wada
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
ichirin2501
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
Hitachi, Ltd. OSS Solution Center.
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
Naohiro Fujie
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
Ryo Sasaki
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
Was ist angesagt?
(20)
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
新たなgitのブランチモデル「Git Feature Flow」!Git Flow,Git Hub Flow,Git Lab Flowを超えれるか?
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
目grep入門 +解説
目grep入門 +解説
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
Keycloakの実際・翻訳プロジェクト紹介
Keycloakの実際・翻訳プロジェクト紹介
Keycloak拡張入門
Keycloak拡張入門
外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
KeycloakでAPI認可に入門する
KeycloakでAPI認可に入門する
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
DynamoDBの初心者に伝えたい初めて触るときの勘所
DynamoDBの初心者に伝えたい初めて触るときの勘所
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
Mehr von Kamimura Taichi
Vuejs meetup
Vuejs meetup
Kamimura Taichi
ruby 関数化のメリット
ruby 関数化のメリット
Kamimura Taichi
ajaxってなんなの
ajaxってなんなの
Kamimura Taichi
わからないことがわからないときにどうしたらよいのか。
わからないことがわからないときにどうしたらよいのか。
Kamimura Taichi
git addの解説
git addの解説
Kamimura Taichi
Ruby - オブジェクト指向入門
Ruby - オブジェクト指向入門
Kamimura Taichi
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
Kamimura Taichi
vim入門
vim入門
Kamimura Taichi
Ansible超入門
Ansible超入門
Kamimura Taichi
What is git commit? - git commitって何なの?
What is git commit? - git commitって何なの?
Kamimura Taichi
angularJS vs angular2
angularJS vs angular2
Kamimura Taichi
Mehr von Kamimura Taichi
(11)
Vuejs meetup
Vuejs meetup
ruby 関数化のメリット
ruby 関数化のメリット
ajaxってなんなの
ajaxってなんなの
わからないことがわからないときにどうしたらよいのか。
わからないことがわからないときにどうしたらよいのか。
git addの解説
git addの解説
Ruby - オブジェクト指向入門
Ruby - オブジェクト指向入門
Ansible roleとinventoryの書き方
Ansible roleとinventoryの書き方
vim入門
vim入門
Ansible超入門
Ansible超入門
What is git commit? - git commitって何なの?
What is git commit? - git commitって何なの?
angularJS vs angular2
angularJS vs angular2
Session管理とRailsのcookie store
1.
@carotene4035 session管理理
2.
前の通信は引き継がない ステートレス
3.
いい感じにわかりやすいステートレスの例例 ポテトください
4.
いい感じにわかりやすいステートレスの例例 かしこまりました
5.
いい感じにわかりやすいステートレスの例例 Mサイズで
6.
いい感じにわかりやすいステートレスの例例 何の話?
7.
いい感じにわかりやすいステートレスの例例 かしこまりました ポテトください 何の話? Mサイズで
8.
いい感じにわかりやすいステートレスの例例 かしこまりました ポテトください 何の話? Mサイズで ステートレスでは 前の通信は引き継がない
9.
いい感じにわかりやすいステートレスの例例 かしこまりました ポテトください 何の話? Mサイズで 前の通信内容の 「ポテトください」はもう無い
だから話が通じない
10.
前の通信は引き継がない ↓ 誰がどういう状態かを保持しない ステートレス
11.
前の通信を引き継ぐ ステートフル
12.
いい感じにわかりやすいステートフルの例例 ポテトください
13.
いい感じにわかりやすいステートフルの例例 かしこまりました ポテト
14.
いい感じにわかりやすいステートフルの例例 Mサイズで ポテト
15.
いい感じにわかりやすいステートフルの例例 680円です。 ポテト Mサイズ
16.
前の通信を引き継ぐ ↓ 誰がどういう状態かを保持できる ステートフル
17.
ステートフルじゃないと 困る時がある ネットショップ、 ログイン管理理等。。。
18.
ステートフルにするには、 Session管理理という⽅方法を使う
19.
ステートフル ステートレス セッション管理
20.
話しかけてきたやつに、 印を付けておく セッション管理理⽅方法(1)
21.
Res Req クライアント サーバ
22.
Req クライアント サーバ
23.
初めてきた人だな。 クライアント サーバ
24.
次来たときは、 session_id=1と名乗ってもらおう。 クライアント サーバ
25.
あと、この人の情報は ここに保存しよう。 session_id =
1 クライアント サーバ
26.
session_id = 1 set_cookie(‘session_id’,
1) クライアント サーバ
27.
session_id = 1 session_id
= 1 cookie cookie…ブラウザにデータを保 存する仕組み クライアント サーバ
28.
session_id = 1 session_id
= 1 cookie Cookie: session_id = 1 post: hoge=fuga クライアント サーバ
29.
hoge=fuga session_id = 1 session_id
= 1 cookie hoge=huga をsession情報という クライアント サーバ
30.
hoge=fuga session_id = 1 session_id
= 1 cookie Res クライアント サーバ
31.
hoge=fuga session_id = 1 session_id
= 1 cookie クライアント サーバ
32.
hoge=fuga session_id = 1 session_id
= 1 cookie Cookie: session_id = 1 post: foo=bar クライアント サーバ
33.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie クライアント サーバ
34.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie Res クライアント サーバ
35.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie クライアント サーバ
36.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie Req クライアント サーバ
37.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie 初めてきた人だな。(略) クライアント サーバ
38.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie session_id = 2 クライアント サーバ
39.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie session_id = 2 set_cookie(‘session_id’, 2) クライアント サーバ
40.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie session_id = 2 session_id = 2 cookie クライアント サーバ
41.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie session_id = 2 session_id = 2 cookie Cookie: session_id = 2 post: name=taichi クライアント サーバ
42.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie name=taichi session_id = 2 session_id = 2 cookie クライアント サーバ
43.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie name=taichi session_id = 2 session_id = 2 cookie Res クライアント サーバ
44.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie name=taichi session_id = 2 session_id = 2 cookie クライアント サーバ
45.
hoge=fuga, foo=bar session_id =
1 session_id = 1 cookie name=taichi session_id = 2 session_id = 2 cookie Cookie: session_id = 1 post: name=inoue クライアント サーバ
46.
hoge=fuga, foo=bar, name=inoue session_id
= 1 session_id = 1 cookie name=taichi session_id = 2 session_id = 2 cookie クライアント サーバ
47.
こんな感じで保持している
48.
【注意】 クライアントはサーバからは ⾒見見えない
49.
クライアントを隠してみると、 session_̲idの働きがより分かる
50.
Req クライアント サーバ
51.
session_id = 1 クライアント
サーバ
52.
session_id = 1 set_cookie(‘session_id’,
1) クライアント サーバ
53.
session_id = 1 クライアント
サーバ
54.
session_id = 1
Cookie: session_id = 1 post: hoge=fuga クライアント サーバ
55.
hoge=fuga session_id = 1 クライアント
サーバ
56.
hoge=fuga session_id = 1 Res クライアント
サーバ
57.
hoge=fuga session_id = 1 クライアント
サーバ
58.
hoge=fuga session_id = 1
Cookie: session_id = 1 post: foo=bar クライアント サーバ
59.
hoge=fuga, foo=bar session_id =
1 クライアント サーバ
60.
hoge=fuga, foo=bar session_id =
1 Res クライアント サーバ
61.
hoge=fuga, foo=bar session_id =
1 クライアント サーバ
62.
hoge=fuga, foo=bar session_id =
1 Req クライアント サーバ
63.
hoge=fuga, foo=bar session_id =
1 session_id = 2 クライアント サーバ
64.
hoge=fuga, foo=bar session_id =
1 session_id = 2 set_cookie(‘session_id’, 2) クライアント サーバ
65.
hoge=fuga, foo=bar session_id =
1 session_id = 2 クライアント サーバ
66.
hoge=fuga, foo=bar session_id =
1 session_id = 2 Cookie: session_id = 2 post: name=taichi クライアント サーバ
67.
hoge=fuga, foo=bar session_id =
1 name=taichi session_id = 2 クライアント サーバ
68.
hoge=fuga, foo=bar session_id =
1 name=taichi session_id = 2 Res クライアント サーバ
69.
hoge=fuga, foo=bar session_id =
1 name=taichi session_id = 2 クライアント サーバ
70.
hoge=fuga, foo=bar session_id =
1 name=taichi session_id = 2 Cookie: session_id = 1 post: name=taichi クライアント サーバ
71.
hoge=fuga, foo=bar, name=inoue session_id
= 1 name=taichi session_id = 2 クライアント サーバ
72.
hoge=fuga, foo=bar, name=inoue session_id
= 1 name=taichi session_id = 2 Res クライアント サーバ
73.
hoge=fuga, foo=bar, name=inoue session_id
= 1 name=taichi session_id = 2 クライアント サーバ
74.
リクエストに含まれる session_̲idを頼りにして、 「誰がどういう状態か」 を保持している
75.
「誰がどういう状態か」 を保持する⽅方法は、 他にもある。
76.
情報を暗号化して、 クライアントに保持してもらう ※ Railsのcookie storeの場合 セッション管理理⽅方法(2)
77.
Res Req クライアント サーバ
78.
Req クライアント サーバ
79.
初めて来た人だな。 クライアント サーバ
80.
次来たときは、 session_id=1と名乗ってもらおう。 クライアント サーバ
81.
セッション情報は暗号化しておこう クライアント サーバ
82.
session_id = 1 Config/secrets.yml セッション情報 🔒セッション情報 暗号化 クライアント
サーバ
83.
set_cookie( ‘ 🔒セッション情報’) クライアント
サーバ
84.
🔒セッション情報 cookie クライアント サーバ
85.
🔒セッション情報 cookie Cookie:
🔒セッション情報 post: hoge=fuga クライアント サーバ
86.
🔒セッション情報 cookie 🔒セッション情報 クライアント サーバ
87.
🔒セッション情報 cookie session_id = 1 Config/secrets.yml セッション情報 🔒セッション情報 復号化 クライアント
サーバ
88.
🔒セッション情報 cookie session_id = 1 Config/secrets.yml セッション情報 🔒セッション情報 復号化 なるほど、さっきの人ね。 クライアント
サーバ
89.
session_id = 1,
hoge=fuga セッション情報 情報追記 🔒セッション情報 cookie クライアント サーバ
90.
session_id = 1,
hoge=fuga Config/secrets.yml セッション情報 🔒セッション情報 再び暗号化 🔒セッション情報 cookie クライアント サーバ
91.
set_cookie( ‘ 🔒セッション情報’) セッション情報’) 🔒セッション情報 cookie クライアント
サーバ
92.
🔒セッション情報 セッション情報 cookie セッション情報が更新される。 クライアント サーバ
93.
「誰がどういう状態か」は cookieが持っている
94.
cookieが持っている session情報を復復号化して、 「誰がどういう状態か」 を把握している
95.
まとめ
96.
誰がどのような状態か、 保持しておきたい時がある ↓ ステートフル
97.
ステートレスをステートフルに する⽅方法 ↓ Session管理理
98.
Session管理理する⽅方法 ↓ sessionやcookie
99.
終わり!
Jetzt herunterladen