0

ログインボタン付きのホーム画面があります。ユーザーが[ログイン]ボタンをクリックするたびに、ログインビューがダイアログ(ポップアップウィンドウ)で開く必要があります。ここでひねりはホーム画面とログイン画面は2つのサブドメインの2つの異なるアプリです。そのため、my.sample.comアプリのダイアログ(ポップアップウィンドウ)でauth.sample.comのログインビューを開く必要があります。悪い英語でごめんなさい。以下のコードを参照してください。

<p>
  <button type="submit" name="PopupLoginbutton" id = "PopupLoginbutton" value="Popbutton">Login</button> 
</p>
<div id="dialog" title="Login" style="overflow: hidden;"> 
<script type="text/javascript">
$(function () {
    $('#dialog').dialog({
        autoOpen: false,
        width: 400,
        resizable: false,
        title: 'hi there',
        modal: true,
        open: function (event, ui) {
                           $(this).load("http://auth.sample.com/");
        },
        buttons: {
            "Close": function () {
                $(this).dialog("close");
            }
        }
    });

    $('#PopupLoginbutton').click(function () {
                  $('#dialog').dialog('open');
    });
}); 
</script> 
4

2 に答える 2

0

私があなたの立場を正しく理解していれば、あなたはサイトのコンテンツまたは領域へのアクセスを提供したいと考えていますが、それはユーザーがログインしている場合に限られます。サブドメインの既存の認証を通じて、新しいサイトにログイン機能を提供しようとしていますか?

残念ながら、認証と承認に一般的な方法を使用している場合、これは説明どおりには機能しません。別のサブドメインにログインしても、目的の場所に到達することはできません。銀行にログインできず、メールをチェックできません。

好きな場所に POST したり、JS を使用して他のサイト/ドメインからコンテンツをロードしたりすることもできます (エンドユーザーのアクセス許可/構成で許可されている場合)。ただし、ログインしているユーザーを表すブラウザーのトークンは、1 つのドメインから引き継がれません。次へ。

いくつかのアプローチがありますが、一般的なものをいくつか紹介します。

  1. カスタム MembershipProvider と RoleProvider を作成します。これらにより、認証サービスにアクセスするために既に持っているサーバー側のロジックを使用できます。
  2. サブドメインが使用しているのと同じメンバーシップ プロバイダー (およびデータベース) を使用するように、新しいサイトを構成します。
  3. Web サービスとトークン化戦略を構築して、既存のサブドメインから ID を公開し、それをサイトに組み込みます。

サブドメインを所有している場合は、番号 2 が最も簡単です。メンバーシップ サービスへの呼び出しをラップできれば、番号 1 はそれほど難しくありません。ただし、サブドメインがサードパーティであり、ユーザー データベースがロックされている場合は、ログイン サービスをラップする手段を提供しない限り、ここではうまくいきません。

これが役立つことを願っています。

乾杯。

于 2012-09-07T20:19:47.517 に答える
0

ビューは、現在の MVC3 プロジェクトにある場合にのみアクセスできます。ログイン画面を表示するだけの場合は、完全な URL (http://my.sample.com/login) を使用してポップアップを表示する必要があります。

ログイン アプリに情報を渡したい場合は、フォームを使用して完全な URL に POST/GET する必要があります。

于 2012-09-07T20:16:27.760 に答える