2

簡単な質問です (既に質問されている場合は申し訳ありません。調べましたが見つかりませんでした)。

iframe を含み、MVC ページを提供するページを持つ webforms アプリがあります。

Web アプリ内でログイン認証を行い、MVC アプリで認証済みであることを確認する必要があります (もっと良い方法があると思いますが、残念ながらこれは既にそうなっています。変更するのは私の仕事ではありません)。

これを機能させるためのさまざまなファッジを知っていますが、これを達成するための適切な/正しい方法はありますか?

前もって感謝します

ダズ

4

1 に答える 1

3

WebFormsとMVCアプリが別々のソリューションにあるが、同じサーバーにデプロイされていると仮定すると、

  1. 認証メカニズムがFormsAuthenticationを使用していることを確認してください。

  2. WebFormsとMVCアプリの両方を同じドメイン(example.com)に配置します

  3. 両方のアプリのWeb.configを編集<system.web><machineKey>し、同じ値に設定します。マシンキーはhttp://www.insitesystems.com/services/machine-key-generator.htmlから生成できます。

    - また -

    サーバー上の親web.configまたはmachine.configから継承するために、両方のweb.configのmachineKeyを省略します。(これをテストしたことはありません)

  4. 同じ設定を使用し<membership>ます<authentication>。ユーザーのパスワードは同じデータベースに保存されているため、メンバーシップ設定を同じにすると、両方のアプリからサインインできます。同じ認証設定を使用すると、WebFormsまたはMVCのどちらに送信されても​​、同じ認証Cookieが送信されます。

  5. 以下をMVCコントローラーに追加して、P3Pヘッダーを出力し、IEがIFRAME内のCookieを受け入れるようにします。あなたのプライバシーポリシーは私のものとは非常に異なる可能性があるため、値をカスタマイズしてください。詳細については、 http://www.p3pwriter.com/LRN_111.aspを参照してください。(または、基本のControllerクラス内に配置し、すべてのコントローラーから継承します。)

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.AddHeader("P3P", @"CP=""CAO PSD OUR CUR""");
        base.OnActionExecuted(filterContext);
    }
    

編集

2番目の考えでは、メインドキュメントとiframeの両方が同じドメインからのものであるため、手順5は必要ありません。したがって、Cookieは、サードパーティ(IEによってブロックされる)ではなく、ファーストパーティと見なす必要があります。

于 2012-06-19T15:17:44.613 に答える