我需要在当前登录用户的 FormsAuthentication AuthCookie 中编辑用户数据。我不知道如何确定当前用户是否选择了持久性 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);
有人有什么想法吗? 谢谢
最佳答案
FormsAuthentication.GetAuthCookie
方法只创建一个新的 cookie。它不会为您提供早先制作的 cookie。
在您的登录页面上,您可能有这样的内容:
FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked)
要知道用户何时通过身份验证,您可以这样做
this.Context.User.Identity.IsAuthenticated
我实际上不确定您是否可以推断出用户具有持久身份验证 cookie 这一事实。一件事是检查 cookie 的过期日期。
在此question有一个读取身份验证 cookie 的示例。
关于c# - 检查当前登录的用户是否有持久的 authcookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7938076/