0

ステートレス Web アプリケーションのセッション管理メカニズムがどのように機能するかを理解しようとしています。現在、私は Play Framework を使用していますが、メカニズムはすべてのステートレス Web フレームワークで同じであるべきだと思います

これは、play フレームワークのドキュメントからのものです: (リンク)

セッションとフラッシュのデータはサーバーに保存されず、Cookie メカニズムを使用して後続の各 HTTP リクエストに追加されることを理解することが重要です。

もちろん、Cookie の値は秘密鍵で署名されているため、クライアントは Cookie データを変更できません (または無効になります)。

私の質問は、サーバーがセッションIDについて何も保存しない場合、クライアントからのセッションをどのように認証するのですか?!

サーバー側でのセッション管理が実際にどのように機能するのか、いろいろ調べましたがわかりませんでした。

4

1 に答える 1

2

私の質問は、サーバーがセッションIDについて何も保存しない場合、クライアントからのセッションをどのように認証するのですか?

遊びは、KEY(application.confで設定したapplication.secret)というキーを介してセッションデータに署名し、英数字データを生成することです。次に、データと暗号化されたデータの両方を Cookie に添付して送り返します。

暗号化されたデータ= 5d9857e8a41f94ecb2e4e957cd3ab4f263cfbdea

データ = userEmail=sil@st.com&userName=silentprogrammer

実行中のアプリケーションのブラウザーで Cookie を検査すると (ブラウザーを右クリック -> 要素の検査 -> アプリケーション -> Cookie -> あなたの URL)、次のようなものが表示されます。

"5d9857e8a41f94ecb2e4e957cd3ab4f263cfbdea-userEmail=sil@st.com&userName=silentprogrammer"

リクエストごとに、データ部分を取得userEmail=sil@st.com&userName=silentprogrammerし、キーからデータに再度署名し、リクエストからの英数字データと照合します。つまり5d9857e8a41f94ecb2e4e957cd3ab4f263cfbdea 、両方が等しい場合 (データと暗号化キーが同じ場合)、セッションが確認され、それ以外の場合はセッションが期限切れになります。これを確認するには、ブラウザの Cookie からデータ部分を変更し、リクエストを再度送信してセッションが存在しないようにします。

これは私が観察したものです

于 2016-10-17T09:51:32.313 に答える