0

環境:MVC3 SqlMemberShipProviderHttpContext.Userはどこで設定できますか?

私はGlobal.asax.csにMvcApplicationクラスで空の

public void Application_AuthenticateRequest(object sender, EventArgs e) {} 

を追加し、そこにブレークポイントを置きます。すべてのページアクセスで解雇されました。送信者はMvcApplicationタイプで、ユーザープロパティとコンテキストプロパティを持ちます。私がログインしていないのです場合

ユーザーコンテキスト .Userはnullです。

私がログインしていた場合は、ユーザーコンテキスト .Userは私の名前でログインを含むGenericPrincipalに設定されています。

だからSqlMemberShipProvider(誰でない場合)がUserオブジェクトを設定しているようです。どのように/これがどこで行われたのか分かりますか?

ありがとうございました。

+0

FormsAuthenticationと一緒にメンバーシップを使用していると思いますか? – mortb

答えて

0

私はFormsAuthenticationと一緒にメンバーシップを使用していると思いますか? おそらくログイン制御と一緒にですか? FormsAuthenticationを使用している場合は、FormsAuthenticationModuleで、ブラウザからIDクッキーを読み取り、そのクッキーからIPrincipalオブジェクトを構築します。

+0

すべての質問にはいります。 本当に質問したいのは、FormAuthenticationModuleがIPrincipalを設定するためにMvcApplicationオブジェクトにどのようにアクセスするのかということでした。 –

+0

dotPeek(http://www.jetbrains.com/decompiler/)を使用すると、FormsAuthenticationModuleのOnAuthenticateが検索されます。 基本的にはHttpContext.Current.Principal =新しいプリンシパル(...) – mortb

+0

HttpContext.User =新しいプリンシパル(...) 私は試していませんが、あなた自身が割り当てられている可能性がありますApplication_AuthenticateRequestのHttpContext.Current.Userに値を渡すと、認証を処理する独自のモジュールを作成できます – mortb

関連する問題