0

私たちのプロジェクトでは、サブドメインのような tumblr と、「mydomain.com」のようなカスタム ドメイン名をユーザーに提供しています。したがって、同じサーバーとアプリケーションが 1 つずつありますが、ドメイン名が異なります。

DNS とルーティングではすべて正常に動作しますが、認証の問題に直面しました。メイン ドメインとサブドメインの共有認証は、Web 構成でマシン キーとドメイン名を指定するだけで解決できます。

    <authentication mode="Forms">
          <forms domain="xxx.com" loginUrl="~/account/logon" timeout="2880" />
    </authentication>

しかし、この場合、「サインアウト」の問題があるため、これらのコード行を追加した後でもサインアウトが機能しません(この問題のすべての解決策を見つけました):

    formsAuthentication.SingOut();
    Session.Abandon();
    HttpCookie cookie1 = new HttpCookie(FormsAuthentication.FormsCookieName, "");
    cookie1.Expires = DateTime.Now.AddYears(-1);
    Response.Cookies.Add(cookie1);
    HttpCookie cookie2 = new HttpCookie("ASP.NET_SessionId", "");
    cookie2.Expires = DateTime.Now.AddYears(-1);
    Response.Cookies.Add(cookie2);
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.Cache.SetNoStore();

結局、カスタム ドメイン名にクロス ドメイン認証を実装する方法がまだわかりません。ドメイン間で特定のサーバーの認証データを共有することは可能ですか? または、ドメイン名とマシンキーを知っていれば、サーバー側でこの情報を取得できますか?

4

1 に答える 1

1

回避策は、クライアントが「メイン ドメイン」から設定した localstorage にユーザー情報を設定し、サブドメインによって作成された Cookie を設定することですが、すべてのサインイン/アウト操作では、「メイン ドメイン」を使用する必要があります。 stakoverflowとすべての兄弟サイトがSSOを使用しているため、どのように機能するかを検索して解決してください。とにかく、この投稿が役立つかもしれません.

編集

SO が自動ログインの問題を解決する方法の詳細については、

于 2013-10-01T14:13:48.013 に答える