3

クレーム サポートを実装したい MVC3 アプリがあります。私の目標は次のとおりです。

  1. クリックすると、ユーザー名/パスワードと Facebook/WindowsLive/Google などのリンクを含むポップアップ ウィンドウが表示されるサインイン リンクを提供します。

  2. /Order/Delete などの保護されたコントローラーにアクセスすると、サインイン ページに自動的にリダイレクトされます

AppFabricLabs.com でアプリケーションとプロバイダーをセットアップし、プロジェクトに STS を含めました。IAuthorizationFilter の実装も作成したので、コントローラーを [WifAuth] としてマークし、OnAuthorization メソッドを正常に呼び出すことができます。訪問者が次のように認証されていないユースケースを実装しました。

    private static void AuthenticateUser(AuthorizationContext context)
    {
        var fam = FederatedAuthentication.WSFederationAuthenticationModule;
        var signIn = new SignInRequestMessage(new Uri(fam.Issuer), fam.Realm);
        context.Result = new RedirectResult(signIn.WriteQueryString());
    }

IDプロバイダーの選択を含むAppFabricLabsページを正常に取得します(そのページをカスタマイズする方法を理解していません)。ログインすると、returnUrl が呼び出されるため、コントローラー メソッド /Home/FederationResult に到達しますが、投稿されたフォームには waおよびwresultフィールドしか含まれていませんが、ユーザーの送信先を知るにはwctxが必要です... まだ持っていませんその理由を突き止めることができました。

wresultは XML ドキュメントであり、ログインしているユーザーの名前と電子メール アドレスが含まれていますが、残念ながらそのユーザーがアクセスした URL は含まれていません。

何かの設定に失敗したのでしょうか、それともベースから外れただけですか? 誰か考えますか?

  • e
4

1 に答える 1

3

のコンテキストを指定するだけですSignInRequestMessage

signIn.Context = HttpContext.Current.Request.RawUrl;

パラメータはすべてのwctxリクエスト/レスポンスに含まれ、最終的にサイトに投稿されるフォームの一部にも含まれます。

于 2011-07-21T22:42:24.403 に答える