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 属性为真,并且 ReturnUrl 变量在当前应用程序中或 EnableCrossAppRedirects 属性为真,则 RedirectFromLoginPage 方法发出身份验证票证并使用 SetAuthCookie 方法将其放置在默认 cookie 中。

您可能希望使用以下代码而不是 RedirectFromLoginPage

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