1

認証チケットからユーザー名を読み取ろうとしています(これはですTESTTEST

---ログインページ------

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
      "TESTTEST",
      DateTime.Now,
      DateTime.Now.AddMinutes(30),
      false,
      String.Empty,
      FormsAuthentication.FormsCookiePath);
            string encryptedTicket = FormsAuthentication.Encrypt(ticket);
            HttpCookie authCookie = new HttpCookie(
                            FormsAuthentication.FormsCookieName,
                            encryptedTicket);
            authCookie.Secure = true;
            Response.Cookies.Add(authCookie);
             FormsAuthentication.RedirectFromLoginPage("User", false);

------保護されたページ------

 HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
            Label1.Text = ticket.Name;

結果 : ラベル テキストは"USER"代わりに"TESTTEST"

これを修正して正しい値を取得するにはどうすればよいですか?

4

1 に答える 1

1

FormsAuthentication.RedirectFromLoginPage指定された名前(この場合は「ユーザー」)で新しいチケットを作成します。http://msdn.microsoft.com/en-us/library/ka5ffkce.aspxから

CookiesSupported プロパティが true で、ReturnUrl 変数が現在のアプリケーション内にあるか、EnableCrossAppRedirects プロパティが true の場合、RedirectFromLoginPage メソッドは認証チケットを発行し、SetAuthCookie メソッドを使用してデフォルトの Cookie に配置します。

RedirectFromLoginPage の代わりに次のコードを使用することをお勧めします。

returnUrl = FormsAuthentication.GetRedirectUrl(userName, false);
HttpContext.Current.Response.Redirect(returnUrl);
于 2012-07-16T08:11:05.527 に答える