[解決済み] セッションとは何ですか?どのように機能するのですか?
質問
Pythonを使ったWebアプリケーション開発の勉強を始めたばかりです。クッキー」と「セッション」という言葉を目にすることがあります。私は、クッキーがブラウザ上のキーと値のペアでいくつかの情報を格納することを理解しています。しかし、私はセッションに関して少し混乱しています。セッションでも、ユーザーのブラウザ上のクッキーにデータを保存します。
たとえば、次のようにログインします。
username='rasmus'
と
password='default'
. このような場合、データはサーバーに送信され、サーバーは私をチェックし、認証されればログインすることになっています。しかし、このプロセスでサーバーはセッションIDを生成し、私のブラウザのクッキーに保存されます。サーバーは、このセッションIDをファイルシステムまたはデータストアに保存します。
しかし、セッションIDだけで、どうやってその後のサイト内移動中に私のユーザー名を知ることができるのでしょうか?セッションIDをキーとして、次のような詳細なデータをサーバーに保存するのでしょうか?
username
,
email
などが値になるのでしょうか?
私はここでかなり混乱しています。助けが必要です。
どのように解決するのですか?
HTTPはステートレスなので、あるリクエストを他のリクエストに関連付けるには、HTTPリクエストの間にユーザーデータを保存する方法が必要です。
クッキーやURLパラメータ(例えば http://example.com/myPage?asd=lol&boo=no は、2つ以上のリクエストの間でデータを転送するのに適した方法です。 しかし、クライアント側でそのデータを読み取り/編集可能にしたくない場合には、これらは良い方法ではありません。
解決策は、データをサーバーサイドに保存し、それにquot;id"を与え、クライアントがそのidだけを知る(そしてhttpリクエストごとに渡す)ようにすることです。これで、セッションが実装されました。あるいは、クライアントを便利なリモートストレージとして使うこともできますが、その場合はデータを暗号化し、サーバー側で秘密を保持することになります。
もちろん、他の人のセッションを乗っ取らないようにしたい、セッションは永遠に続くのではなく、期限切れにしたい、など考慮すべき点は他にもあります。
あなたの具体的な例では、ユーザーID (ユーザー名またはユーザーデータベース内の他のユニークなID) は、識別に成功した後、サーバーサイドでセッションデータに格納されます。そうすると、クライアントからの HTTP リクエストのたびに、 (クライアントから与えられた) セッション ID が、認証されたユーザー ID を含む (サーバーに保存された) 正しいセッションデータを指すようになります - そうすれば、あなたのコードはどのユーザーと話しているのかを知ることができます。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 好きな「プログラマー」アニメは?
-
[解決済み] 関数は return 文を1つだけ持つべきですか?
-
[解決済み] キュアリングと部分適用の違いは何ですか?
-
[解決済み] セッションとは何ですか?どのように機能するのですか?
-
[解決済み】マジックナンバーとは何ですか、なぜ悪いのですか?[クローズド]
-
[解決済み】ループや関数をサポートする言語で「goto」の正当な使用例はあるのか?
-
[解決済み] TypeとClassの違いは何ですか?
-
[解決済み] 不変量とは何ですか?
-
[解決済み] 直交性」とは何ですか?
-
[解決済み] プログラミングにおける "Context "という言葉?[クローズド]