ASP.ネット:セッション ID があれば、セッション オブジェクトを取得できますか?

StackOverflow https://stackoverflow.com/questions/55576

  •  09-06-2019
  •  | 
  •  

質問

この質問は以下に関連しています これです, 、ただし、実際に良い答えを得るには、少し長くなりすぎたと思います。これについては簡単に説明します。

私は、aspx ページからのフォーム投稿を受け入れる Web ハンドラー (ashx) に取り組んでいます。ハンドラーがこのフォームの投稿を受信すると、必要な処理を行うために、ログインしているユーザー (User.Identity.Name) を知る必要がありますが、ブラウザーによって送信される Cookie に依存することはできません。

Session.SessionID を取得して非表示のフォーム フィールドに配置できることはわかっていますが、ハンドラーがフォームの投稿を受信した後、その SessionID を使用してログイン ユーザーの ID を特定するにはどうすればよいでしょうか?

セッション状態に StateServer モードを使用しています。

役に立ちましたか?

解決 2

Jonas はこの質問に対する素晴らしい回答をここに投稿しました。

ASP.Net セッション ID を非表示のフォーム フィールドに入力できますか?

他のヒント

を実装すればできると思います IReadOnlySessionState HttpHandler のインターフェース

セッションを直接使用する必要がない限り、ログインしているユーザーの ID に関するあらゆる情報を常にシングルトン辞書またはキャッシュに保存し、隠しフィールドに保存された SessionID を介して参照できます。私個人としては、これにはセキュリティ上の問題があると考えていますが、それについては触れません。このタイプの実装では、使い捨て ID を発行することを検討します。

HttpHandler または HttpModule の実装では、BeginRequest イベントから常にセッションにアクセスできるわけではありません。OnAcquireRequestState と呼ばれる、処理できる別のイベントがあります。そのイベントでコードを記述する場合、HttpContext.Current.Session は null になりません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top