1

Framework4.0の使用

シナリオ1:
   Live.comを使用してサインインします。
   Live.comでは、FormsAuthenticationTicketはnullではなく、ticket.nameは私のユーザーIDです。
   Local.comではFormsAuthenticationTicketがnullです。
   ここで何が欠けているのかわかりません。

シナリオ2:
   Local.comを使用してサインインします。
   Local.comでは、FormsAuthenticationTicketはnullではなく、ticket.nameは私のユーザーIDです。
   Live.comではFormsAuthenticationTicketがnullです。

マイマシンの構成設定は、ローカルサイトとライブサイトで同じです。
ターゲットフレームワークは4.0です。

ApplicationAuthenticate_requestは以下のとおりです。

HttpCookie AuthCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = null;
if (AuthCookie != null)
{
    try
    {
        ticket = FormsAuthentication.Decrypt(AuthCookie.Value);
        if (ticket != null && ticket.Name != null)
            Response.Write(ticket.Name);
    }
    catch (Exception ex11)
    {
        string sErr = ex11.Message + ex11.StackTrace;
    }
}

サインインコードは以下のとおりです

authenticationTicket = new FormsAuthenticationTicket(UserId, mPersistant, 30);
//FormsAuthenticationTicket authenticationTicketV1 = new FormsAuthenticationTicket(1, userGuid,DateTime.Now, DateTime.Now.AddMinutes(30), lPersistant, "User");
string authEncrypt = FormsAuthentication.Encrypt(authenticationTicket);
FormsAuthenticationTicket authTickChk = FormsAuthentication.Decrypt(authEncrypt);
bool bChk = authTickChk.Name.Equals(authenticationTicket.Name);
// Create form identity from FormsAuthenticationTicket.
id = new FormsIdentity(authenticationTicket);
// Set the Context User
HttpContext.Current.User = this;
4

2 に答える 2

1

machine.config とは、web.config のことですか? web.config ファイルが異なる場合、これが問題になる可能性があります

<authentication mode="Forms">
  <forms loginUrl="member_login.aspx"
  cookieless="UseCookies"
  domain="contoso.com" />
</authentication>

お使いのブラウザーは、FormsAuth Cookie を web.config ファイルで指定されたドメインにのみ送信します。おそらく、これを各環境で異なるドメインに設定していますか?

于 2012-04-07T05:09:58.650 に答える
0

フォーム認証 Cookie が別のサイトに送信されていないようですが、これは予期された動作です。理解しておくべきことは、フォーム認証は、暗号化された値が渡される単なる Cookie であるということです。フォーム認証チケットは、Cookie のすべての規則に従います。これには、あるサイト (live.com) によって設定された Cookie が別のサイト (local.com) に送信されないという規則が含まれます。

FormsAuthentication.SetAuthCookie()また、ユーザーのログインに使用することをお勧めします。ログイン コードで Cookie が設定されていないようです。

Fiddler などのツールは、問題を解決するのに役立つ場合があります。ログインすると、応答には次のようなヘッダーが含まれている必要がありますSet-Cookie: .ASPXAUTH=FC0C57A...; path=/; HttpOnly

後続の各リクエストは、次のようなヘッダーを送信しますCookie: ASP.NET_SessionId=zcsmunozu0iqshwcvb11qu1m; .ASPXAUTH=FC0C57A...

ただし、ドメインが Cookie を設定したサイトと同じ場合、ブラウザーは .ASPXAUTH Cookie のみを送信します。

于 2015-09-10T17:19:20.273 に答える