Asp.net mvc 是否可以更新FormsAuthenticationCookie值?

Asp.net mvc 是否可以更新FormsAuthenticationCookie值?,asp.net-mvc,cookies,forms-authentication,setcookie,formsauthentication,Asp.net Mvc,Cookies,Forms Authentication,Setcookie,Formsauthentication,我必须在登录时设置FormsAuthenticationcookie值(FormsAuthentication.SetAuthCookie(UserDesignation,false))。 现在我需要提供名称更改选项。因此,当用户更改其名称时,我需要将FormsAuthenticationcookie值从旧名称更新为新名称 有可能吗 如果是,我该怎么做?您可以如下所示修改cookie数据,但根据我的建议,最好将角色保留在单独的cookie中,并使用FormsAuthentication cook

我必须在登录时设置
FormsAuthentication
cookie值(
FormsAuthentication.SetAuthCookie(UserDesignation,false)
)。 现在我需要提供名称更改选项。因此,当用户更改其名称时,我需要将
FormsAuthentication
cookie值从旧名称更新为新名称

有可能吗


如果是,我该怎么做?

您可以如下所示修改cookie数据,但根据我的建议,最好将角色保留在单独的cookie中,并使用FormsAuthentication cookie对其进行身份验证

HttpCookie cookie = FormsAuthentication.GetAuthCookie(Username, true);
var ticket = FormsAuthentication.Decrypt(cookie.Value);

var newticket = new FormsAuthenticationTicket(ticket.Version,
                                              ticket.Name,
                                              ticket.IssueDate,
                                              ticket.Expiration,
                                              true, //persistent 
                                              "user data,designation",
                                              ticket.CookiePath);

cookie.Value = FormsAuthentication.Encrypt(newticket);
cookie.Expires = newticket.Expiration.AddHours(2);
HttpContext.Current.Response.Cookies.Set(cookie);

因此,我们无法更改FormsA指示cookie中的Name属性值。我们只能更改用户数据。是吗?是的,如果更改cookie名称,它将被视为新cookie。如果您想使用这种方法,那么在身份验证之后,只需删除旧cookie并创建一个新cookie。我想更改
User.Identity.Name
的值。在上面的代码中,它相当于
ticket.Name
。谢谢;)