2

myopenidプロバイダーからAuthenticationStatus.Authenticated(DotNetOpenIdライブラリ)応答を受け取ったら、MVC Redirect(myurl)を使用してユーザーをログインページから別のページにリダイレクトしたいと思います。しかし、残念ながら、myurlにアクセスする代わりに、ユーザーは空のページにリダイレクトされます。

myurl?token = AWSe9PSLwx0RnymcW0q ....(+数キロバイトのmyopenid固有のクエリ文字列)

FormsAuthentication.RedirectFromLoginPage()も試しましたが、myurlではなく元のログインページにリダイレクトされます。

誰かがmyurlへの適切なリダイレクトを提案できますか?

ありがとう

4

2 に答える 2

0

従来の ReturnUrl クエリ文字列パラメーターを使用して、ユーザーを正しいページに戻します。残念ながら、RedirectFromLoginPage は OpenId 認証の後ではうまく機能しないため、手動で行う必要があります。これは、コントローラーの奥深くではなく、認証モジュールとして行われることに注意してください。こっちの方がすっきりした感じ。

      FormsAuthentication.SetAuthCookie(openid.Response.ClaimedIdentifier, false);
      //FormsAuthentication.RedirectFromLoginPage(openid.Response.ClaimedIdentifier, false); <-- doesn't work
      //send back to the right page
      string returnUrl = ctx.Request.QueryString["ReturnUrl"];
      if (!string.IsNullOrEmpty(returnUrl))
      {
        returnUrl = HttpUtility.UrlDecode(returnUrl);
        ctx.Response.Redirect(returnUrl);
      }

OpenIdAuthenticationModule の実装全体を確認したい場合は、 codeplex でソース コードを確認してください。

于 2009-02-21T23:44:18.313 に答える