Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
KT
Uploaded by
Kamimura Taichi
5,246 views
Session管理とRailsのcookie store
ログイン機能を支えるsession管理の話と、Railsのcookie storeの話です。ステートフル・ステートレスの話が出てきます。
Engineering
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 99
2
/ 99
3
/ 99
4
/ 99
5
/ 99
6
/ 99
7
/ 99
8
/ 99
9
/ 99
10
/ 99
11
/ 99
12
/ 99
13
/ 99
14
/ 99
15
/ 99
16
/ 99
17
/ 99
18
/ 99
19
/ 99
20
/ 99
21
/ 99
22
/ 99
23
/ 99
24
/ 99
25
/ 99
26
/ 99
27
/ 99
28
/ 99
29
/ 99
30
/ 99
31
/ 99
32
/ 99
33
/ 99
34
/ 99
35
/ 99
36
/ 99
37
/ 99
38
/ 99
39
/ 99
40
/ 99
41
/ 99
42
/ 99
Most read
43
/ 99
44
/ 99
45
/ 99
46
/ 99
47
/ 99
48
/ 99
49
/ 99
50
/ 99
51
/ 99
52
/ 99
53
/ 99
54
/ 99
55
/ 99
56
/ 99
57
/ 99
58
/ 99
59
/ 99
60
/ 99
61
/ 99
62
/ 99
63
/ 99
64
/ 99
65
/ 99
66
/ 99
67
/ 99
68
/ 99
69
/ 99
70
/ 99
71
/ 99
72
/ 99
73
/ 99
74
/ 99
75
/ 99
76
/ 99
77
/ 99
78
/ 99
79
/ 99
80
/ 99
81
/ 99
82
/ 99
Most read
83
/ 99
84
/ 99
85
/ 99
Most read
86
/ 99
87
/ 99
88
/ 99
89
/ 99
90
/ 99
91
/ 99
92
/ 99
93
/ 99
94
/ 99
95
/ 99
96
/ 99
97
/ 99
98
/ 99
99
/ 99
More Related Content
PDF
マイクロサービス 4つの分割アプローチ
by
増田 亨
PDF
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
MySQL 5.7にやられないためにおぼえておいてほしいこと
by
yoku0825
PDF
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
PDF
SQLアンチパターン - ナイーブツリー
by
ke-m kamekoopa
ODP
Guide To AGPL
by
Mikiya Okuno
PDF
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
マイクロサービス 4つの分割アプローチ
by
増田 亨
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
MySQL 5.7にやられないためにおぼえておいてほしいこと
by
yoku0825
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
by
Yahoo!デベロッパーネットワーク
SQLアンチパターン - ナイーブツリー
by
ke-m kamekoopa
Guide To AGPL
by
Mikiya Okuno
テスト文字列に「うんこ」と入れるな
by
Kentaro Matsui
What's hot
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
PPTX
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
by
NTT DATA Technology & Innovation
PDF
人生がときめくAPIテスト自動化 with Karate
by
Takanori Suzuki
PDF
UnboundとNSDの紹介 BIND9との比較編
by
hdais
PDF
Marp Tutorial
by
Rui Watanabe
PPTX
Redisの特徴と活用方法について
by
Yuji Otani
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
PDF
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
PDF
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
PDF
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
PDF
外部キー制約に伴うロックの小話
by
ichirin2501
PDF
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
by
Preferred Networks
PDF
WPSCanによるWordPressの脆弱性スキャン
by
OWASP Nagoya
PDF
今さらだけどMySQLとライセンス
by
Hidenori Ishii
PPTX
【修正版】Django + SQLAlchemy: シンプルWay
by
Takayuki Shimizukawa
PDF
Scapyで作る・解析するパケット
by
Takaaki Hoyo
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
by
pospome
PDF
よくある質問と対策 2015
by
Atsushi Tanaka
PDF
目grep入門 +解説
by
murachue
PDF
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
by
Takuto Wada
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
by
NTT DATA Technology & Innovation
人生がときめくAPIテスト自動化 with Karate
by
Takanori Suzuki
UnboundとNSDの紹介 BIND9との比較編
by
hdais
Marp Tutorial
by
Rui Watanabe
Redisの特徴と活用方法について
by
Yuji Otani
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
by
Mikiya Okuno
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
by
Yahoo!デベロッパーネットワーク
ソーシャルゲーム案件におけるDB分割のPHP実装
by
infinite_loop
ソーシャルゲームのためのデータベース設計
by
Yoshinori Matsunobu
外部キー制約に伴うロックの小話
by
ichirin2501
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
by
Preferred Networks
WPSCanによるWordPressの脆弱性スキャン
by
OWASP Nagoya
今さらだけどMySQLとライセンス
by
Hidenori Ishii
【修正版】Django + SQLAlchemy: シンプルWay
by
Takayuki Shimizukawa
Scapyで作る・解析するパケット
by
Takaaki Hoyo
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
by
pospome
よくある質問と対策 2015
by
Atsushi Tanaka
目grep入門 +解説
by
murachue
オブジェクト指向エクササイズのススメ
by
Yoji Kanno
More from Kamimura Taichi
PDF
Ansible roleとinventoryの書き方
by
Kamimura Taichi
PDF
vim入門
by
Kamimura Taichi
PDF
Ansible超入門
by
Kamimura Taichi
PDF
ajaxってなんなの
by
Kamimura Taichi
PPTX
Ruby - オブジェクト指向入門
by
Kamimura Taichi
PDF
What is git commit? - git commitって何なの?
by
Kamimura Taichi
PDF
Vuejs meetup
by
Kamimura Taichi
PDF
git addの解説
by
Kamimura Taichi
PDF
わからないことがわからないときにどうしたらよいのか。
by
Kamimura Taichi
PPTX
angularJS vs angular2
by
Kamimura Taichi
PDF
ruby 関数化のメリット
by
Kamimura Taichi
Ansible roleとinventoryの書き方
by
Kamimura Taichi
vim入門
by
Kamimura Taichi
Ansible超入門
by
Kamimura Taichi
ajaxってなんなの
by
Kamimura Taichi
Ruby - オブジェクト指向入門
by
Kamimura Taichi
What is git commit? - git commitって何なの?
by
Kamimura Taichi
Vuejs meetup
by
Kamimura Taichi
git addの解説
by
Kamimura Taichi
わからないことがわからないときにどうしたらよいのか。
by
Kamimura Taichi
angularJS vs angular2
by
Kamimura Taichi
ruby 関数化のメリット
by
Kamimura Taichi
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.
終わり!
Download