如何在登录cookie中保存userID?

时间:2011-04-26 06:17:14

标签: c# asp.net login

使用手动登录Web应用程序,

FormsAuthentication.SetAuthCookie(_username, true);

如何使用cookie保存userID(整数值)?

3 个答案:

答案 0 :(得分:2)

FormsAuthenticationTicket 有一个需要string userData的重载。除了默认的HttpContext.User.Identity(通常是电子邮件地址,例如使用SetAuthCookie登录的内容)之外,您还可以在此处将其他数据添加到需要保留的加密Cookie中。

所以你可以这样做:

    var user = new User { UserId = 1, Nickname = "Foo" };

    var encodedTicket = FormsAuthentication.Encrypt(
       new FormsAuthenticationTicket(
          1, 
          user.Nickname, 
          DateTime.Now,  
          DateTime.UtcNow.Add(FormsAuthentication.Timeout),
          true,                                                                            
          user.ToString()));

var httpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encodedTicket);
httpResponseBase.Cookies.Add(httpCookie);

您可以在ToString()对象上使用User方法来保留该信息(例如,作为分隔字符串)。

然后,当您解密cookie时,拆分字符串并撤回每个请求所需的信息。

答案 1 :(得分:1)

使用FormsAuthentication.GetAuthCookie

HttpCookie httpCookie = FormsAuthentication.GetAuthCookie(_username, true); 
httpCookie["ID"] = userID.ToString();

答案 2 :(得分:0)

身份验证方案中使用的用户名不一定表示用户的登录名或实际人名。它本质上意味着任何可以识别您的用户的字符串 - 通常,在表单身份验证的情况下将使用登录名(因为登录将是唯一的),但您可以改为使用用户ID(或登录和用户ID的组合,例如“2”) | jack“) - 只要记住你用作”用户名“的任何值,同样可以用作用户的身份(HttpContext.User.Identity.Name)。