Session
sessionの更新
セッションはサーバー側で管理されるデータであり、セッションの更新は通常、新しいデータで既存のセッションデータを上書きする操作。
このため、セッションの更新が行われると、以前のセッションデータは置き換えられて失われる場合がある。
セッションの更新は、セッションに関連する情報の変更や追加、削除などが行われた場合に発生することがあります。 具体的には、セッションに新しいデータが追加されたり、一部のデータが削除されたりすることがあります。セッションの更新が行われると、更新後のセッションデータが有効になり、以前のデータは失われます。
したがって、セッションの更新が行われる場合には、セッションに含まれていた以前の値が消える可能性があることに注意してください。 セッションの更新が必要な場合には、適切なデータを提供してセッションを更新する必要があります。
HTTP通信の問題点
- HTTP通信は1回1回の単発の通信のため接続を維持できない。
- HTTP通信はユーザー識別の仕組みがないので、どのユーザーからの接続かを判別できない。なので、一連のHTTP通信で、ユーザー接続を維持し続けるには、何かしらの仕組みを実装する必要がある
解決方法
ユーザ ー認証完了後、サーバー側でユーザー識別子を発行しブラウザへのレスポンスで識別子を送る。
次回以降ブラウザからサーバーにアクセスする際、毎回その識別子をサーバーに送ることにより、サーバー側でどのユーザーからのアクセスかがわかるようにする。
そして、その識別子のやり取り方法の1つとして、クッキーを用いる方法がある。
セッションについて
- セッションIDの生成方法はHTTPの仕様として定まっていない。サーバー側の実装に依存する
- 各プログラム言語にはメジャーなセッションライブラリがあり、セッションID生成には、それらを使うことが多い
- それらのライブラリの多くのデフォルトの実装は、セッションIDとしてユニークで推測しずらい値を生成し、それをキーとして「ユーザーID」などのユーザーデータを紐付けて、ローカルファイルやメモリ上にキーバリューデータとして保存しておく
- そして、ブラウザーからアクセスがあった場合、クッキーからセッションIDを読み取りセッションIDをキーに、キーバリューデータから該当するユーザーデータを復元する
- キーバリューデータをサーバーのローカルファイルやメモリに保存するため、サーバーを複数設置して負荷分散させた場合、接続毎に接続先のサーバーが変わってしまうので、セッションが維持できなくなってしまう