固有の問題はないと確信していますが、Google とこのサイト全体を検索しましたが、探しているものに対する明確な答えが見つかりませんでした。そこで、この問題について何か助けが得られるかどうかを確認するために、自分自身を説明したいと思いました。
私たち (同僚と私) は、ユーザーがより生産的な方法で作業を完了するために複数のセッションを必要とするため、Cookie を使用しないセッションが必要であると判断しました。
例
Bob は、ウィンドウ A で実行時間の長いプロセスを開始した可能性があります。作業を続行するために、Bob は新しいセッションを生成するウィンドウ B を開きます。これは、ウィンドウ A で何が起こっているかを妨げないようにするために必要です。Bob は新しいウィンドウを開くたびに、再度ログインする必要があります。
問題
これが本当の問題なのかどうかよくわからないので、質問する理由があります。私が発見したと思う問題は、ボブがログインするたびに、現在のフォーム認証チケット (および Cookie) が上書きされることです。これで問題ないのか、Bob が 2 回目にログインした後も以前のセッションとウィンドウの組み合わせが有効である理由がわかりません。チケットが上書きされたということは、チケットが無効になったために最初のセッション/ウィンドウ コンボが終了するということではありませんか? これは以下に関するものです。
Request.IsAuthenticated //Making sure the supplied ticket is valid
質問
では、フォーム認証チケット (および Cookie) が上書きされているため、これはどういう意味ですか?
- チケット (および Cookie) が上書きされていることに注意する必要がありますか?
ログイン中に、チケット (存在する場合) を傍受して有効期限を確認する必要がありますか? 有効期限が切れていない場合、チケットを更新するか、新しいチケットを作成する必要がありますか?
FormsAuthentication.RenewTicketIfOld(ticket) //Just an example
Cookie を使用しないセッションを使用している場合、Cookie を使用しないフォーム認証も使用する必要がありますか? これを行うポイントは、各セッション/ウィンドウを互いに 100% 独立させることです。もう上書きは発生しません。これに引き返すことはありますか?思いつきません。
PS: Cookie は、キーと値のペアのように、格納されているものの単なるコンテナーであることはわかっています。
追加情報...
フォーム認証チケット:
IsPersistent を true に設定
チケット バージョン 2
フォーム Cookie:
キー = FormsCookieName (web.config タグから)
値 = ハッシュされたチケット
Web.Config:
<sessionState
cookieless="true"
mode="SQLServer"
sqlConnectionString="..."
timeout="300"
regenerateExpiredSessionId="true" />
<forms name="FormsCookieName"
path="../"
loginUrl="Login.aspx"
protection="All"
timeout="300"
slidingExpiration="true" >
</forms>