14

この質問はこれに関連してますが、本当に良い答えを得るには少し長すぎたと思います。これは簡単に説明します。

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

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

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

4

4 に答える 4

3

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

于 2008-09-11T01:11:29.440 に答える
2

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

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

于 2008-10-27T17:30:51.733 に答える
1

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

于 2008-09-11T01:40:11.303 に答える
0

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

于 2008-09-11T01:38:53.337 に答える