【问题标题】:Is it possible to update FormsAuthentication cookie value?是否可以更新 FormsAuthentication cookie 值?
【发布时间】:2016-09-13 06:40:13
【问题描述】:

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

有可能吗?

如果是意味着,我该怎么做?

【问题讨论】:

    标签: asp.net-mvc cookies forms-authentication setcookie formsauthentication


    【解决方案1】:

    您可以修改 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);
    

    【讨论】:

    • 因此,我们无法更改 FormsAuthendication cookie 中的 Name 属性值。我们只能更改用户数据。对吗?
    • 是的,如果您更改cookie名称,它将被视为新cookie。如果您想采用这种方法,那么在身份验证后只需删除旧 cookie 并创建一个新 cookie。
    • 我想更改User.Identity.Name 的值。在上面的代码中,它等价于ticket.Name。谢谢;)
    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    • 2018-09-22
    • 1970-01-01
    相关资源
    最近更新 更多