我需要在当前登录用户的FormsAuthentication AuthCookie中编辑userdata。我不知道如何确定当前用户是否选择了持久性cookie(“记住我”)。
//user is already logged in...
HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, ispersistant); //how to I determine 'ispersistant'?
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, NEWuserdata);
authCookie.Value = FormsAuthentication.Encrypt(newTicket);
HttpContext.Current.Response.SetCookie(authCookie);
有人有任何想法吗? 感谢
答案 0 :(得分:7)
FormsAuthentication.GetAuthCookie
方法只会创建一个新Cookie。它不会让你获得早先制作的cookie。
在您的登录页面上,您可能会遇到以下情况:
FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked)
要知道用户何时通过身份验证,您可以
this.Context.User.Identity.IsAuthenticated
我实际上不确定您是否可以推断出用户具有持久身份验证Cookie的事实。有一件事是检查cookie的有效期。
在此question中,有一个用于读取身份验证Cookie的示例。
答案 1 :(得分:7)
这应该检索现有的表单auth cookie,检查票证,并判断它是否持久。
var FormsAuthCookie = Response.Cookies[FormsAuthentication.FormsCookieName];
var ExistingTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value);
bool IsPersistent = ExistingTicket.IsPersistent;
答案 2 :(得分:2)
我最终在登录时在authcookie的userdata属性中存储了“ispersistant”。