使用手动登录Web应用程序,
FormsAuthentication.SetAuthCookie(_username, true);
如何使用cookie保存userID(整数值)?
答案 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
)。