ユーザーオブジェクトのようなセッションオブジェクトを複数のブラウザ間で共有することは可能ですか?私の要件は、ユーザーが異なるブラウザー(IE、Chrome、またはFireforx)を切り替えようとする場合、アプリケーションはユーザーオブジェクトの共有とともにナビゲーションを許可する必要があることです。
2 に答える
ブラウザ間でセッションを共有することはできません。ブラウザはセッション Cookie を使用して各クライアントを一意に識別し、ブラウザのメモリに保存します。そのため、1 つのブラウザーが他のブラウザーのメモリにアクセスすることは許可されていないため、異なるブラウザー間でセッションを共有することはできません。セッション Cookieについて詳しく読むと、より明確になる可能性があります。
それは可能です。SessionIDManager
ただし、独自のクラスを作成する必要があります。
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionidmanager.aspx
独自に作成するSessionIDManager
場合は、リクエストが特定のセッションに属するかどうかをどのように判断するかを決定します。クライアントIPは少なくとも1つのパラメーターである必要があり、一部のアプリケーション固有のキーは別のパラメーターである可能性があります。返される実際のセッションキーは、すべてのパラメーターのハッシュの適切な文字列表現である可能性があります(生成されたセッションIDはセッションごとに一意である必要があります) )。
完了したら、次SessionIdManager
の場所に接続できますweb.config
。
<sessionState mode="[mode]" ...
sessionIDManagerType="[full type name of your class here]" ... />
だからそれを行うことができます。
しかし、本当にやむを得ない理由がない限り、私は個人的にそのようなクラスを作成しません。
- それを間違えて、異なるユーザーのセッションを混同するのは本当に簡単でしょう。
- 別のユーザーが同じプロキシを介してサイトにアクセスした場合はどうなりますか?
サイトの前にロードバランサーがある場合はどうなりますか(=すべてのリクエストは同じIPから送信されているようです)。等々。
そしてまた、おそらく最も重要なのは:
- これは、セッションが通常どのように機能するかについてのユーザーの期待を破ります...