1

VS2012でWebフォームテンプレートを使用していて、OpenAuthコードを見ています。

外部ログインが成功した後に外部データを保存したいのですが、デバッグ中に、有効な外部ログイン後のこれらの時点でのコード実行中に、ログインしたユーザー名を保持する方法を確認できません-

ProcessProviderResult-if(OpenAuth.Login(authResult.Provider、authResult.ProviderUserId、createPersistentCookie:false))

CreateAndLoginUser()-if(OpenAuth.Login(ProviderName、ProviderUserId、createPersistentCookie:false))

これらの呼び出しの後、User.Identity.Nameがなく、ユーザー名が認証されていないので、どうすればmembershipusernameを取得できますか?リダイレクト後にログインしているようです(本当にセッションに何かを保存し、リダイレクト後にそれを変更する必要がありますか?間違っていると思います)。

OpenAuthのどのメソッド。または同等のユーザー名を取得するために呼び出す必要があります。そうすれば、必要に応じてデータを保存できます。

ありがとう

4

1 に答える 1

1

User.Identity.NameForms Auth認証プロバイダーが返されたときにのみ入力されます(指摘したように、クライアントがリダイレクトされた後)。

ただし、認証プロセス中、リダイレクト前の OpenAuth コードでは、ユーザー名は単純にAuthenticationResult.UserName(つまり、ExternalLoginLandingPage.aspx.cs の authResult.UserName) で表されます。

于 2012-11-22T15:14:34.843 に答える