在SetAuthCookie部分,我们稍微操纵用户名
string userInfo = identity.Name + "|" + Util.GetIPAddress();
FormsAuthentication.SetAuthCookie(userInfo, isPersistent);
这是为了对Application_AuthenticateRequest
稍后我想将名称还原为正常名称(没有" |"和IP地址),但无法找到方法。
我遇到的问题通常是处理用户名没有正确更新,但我需要的是重新分配名称。
我尝试设置一个新的Cookie并设置一个新的Authcookie,但它们没有用,HttpContext.Current.User.Identity.Name
没有变化。
我该怎么做?
答案 0 :(得分:0)
构建您自己的身份验证cookie以添加所需的自定义值是一种更好的方法,这样可以保持用户名不变,更加一致并且具有预期的行为。
考虑到这一点,你在cookie中加密了userdata(ip)。
var cookie = FormsAuthentication.GetAuthCookie(name, rememberMe);
var ticket = FormsAuthentication.Decrypt(cookie.Value);
var newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration,ticket.IsPersistent, userData, ticket.CookiePath);
var encTicket = FormsAuthentication.Encrypt(newTicket);
cookie.Value = encTicket;
//and add the cookie to the current HttpContext.Response
response.Cookies.Add(cookie);
另外,您可以从当前的User.Identity
中检索此userDatavar data = (HttpContext.Current?.User.Identity as FormsIdentity)?.Ticket.UserData