0

Google のみを認証プロバイダーとして使用して、Web サイトに OpenID を実装しようとしています。OpenIdButton コントロールを使用して、ユーザーを Google Apps ログインに誘導しています。これは、ユーザーが常に同じ場所に移動できるようにするためです。

ボタンはそれらを適切な場所に送信し、ReturnToUrl に正しく返しますが、OnLoggedIn イベントが発生したようには見えません。メソッドで TextBox 値を設定してイベントをチェックしていますが、TextBox 値に変化が見られません。これが私のコードです...

<tr>
  <td>
    <asp:TextBox ID="devMsg" runat="server"/>
  </td>
</tr>
<tr>
  <td valign="top" align="center">
    <font size="-1"><b>Sign in with your</b></font>
    <br />
    <br />
<rp:OpenIdButton ID="OpenIdButton1" runat="server" Text="Login with your Google account!"
             ImageUrl="http://www.google.com/accounts/google_transparent.gif"
                 Identifier="https://www.google.com/accounts/o8/site-xrds?hd=dev.connexcloud.com"
                 ReturnToUrl="http://localhost:1587/OpenIdRelyingPartyWebForms/loginGoogleApps.aspx"
                 OnLoggedIn="OpenIdLogin_LoggedIn" />
    <br />
    <br />
    <font size="-1"><b>Account</b></font>
  </td>
</tr>


protected void OpenIdLogin_LoggedIn(object sender, OpenIdEventArgs e)
{
  this.devMsg.Text = "no response";

  if (e.Response != null)
  {
    devMsg.Text = "response";

    switch (e.Response.Status)
    {
      case AuthenticationStatus.Authenticated:
           this.devMsg.Text = "authenicated";
           break;
      case AuthenticationStatus.Canceled:
           this.devMsg.Text = "canceled";
           break;
      case AuthenticationStatus.Failed:
           this.devMsg.Text = "failed";
           break;
    }
  }
}

TextBox は何にも設定されていないので、応答が Google から戻ってきたときに OpenIdLogin_LoggedIn 呼び出しが行われないように見えます。

4

1 に答える 1

1

LoggedIn ハンドラにブレークポイントを設定してみましたか? 私はそれが働いていると思う。LoggedIn ハンドラーが呼び出された後、コントロールはFormsAuthentication.RedirectFromLoginPageOpenID 要求された識別子を使用して呼び出します。これにより、設定している TextBox が気付く前にスクラブされます。

テストできるブレークポイント以外の別の方法はe.Cancel = true、ハンドラーで設定することです。これにより、後続の への呼び出しが抑制されますFormsAuthentication.RedirectFromLoginPage

于 2010-07-16T14:16:07.457 に答える