C# 验证ASP net web表单后的存储Id
我想在通过电子邮件和密码进行表单身份验证后保存用户ID。我目前正在使用一个会话来执行此操作 但是,会话和表单身份验证有不同的超时,并且由于当一个用户登录时会话是服务器类型的变量,如果我在另一台计算机上使用不同的用户名登录,会话简单更改其值,这是一个主要问题C# 验证ASP net web表单后的存储Id,c#,asp.net,session,webforms,forms-authentication,C#,Asp.net,Session,Webforms,Forms Authentication,我想在通过电子邮件和密码进行表单身份验证后保存用户ID。我目前正在使用一个会话来执行此操作 但是,会话和表单身份验证有不同的超时,并且由于当一个用户登录时会话是服务器类型的变量,如果我在另一台计算机上使用不同的用户名登录,会话简单更改其值,这是一个主要问题 除了缓存,还有其他方法可以实现吗?您可以将用户ID存储在扩展的身份验证cookie中。在授权例程上,编写自定义cookie并将其添加到响应: var ticket = new FormsAuthenticationTicket(1, user
除了缓存,还有其他方法可以实现吗?您可以将用户ID存储在扩展的身份验证cookie中。在授权例程上,编写自定义cookie并将其添加到响应:
var ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(60), false, userId.ToString()));
HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket)) { HttpOnly = true });
您可以为经过身份验证的请求解密该cookie,并找出用户ID:
HttpCookie authCookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
int iserId = int.Parse(authTicket.UserData);