c# - 检查当前登录的用户是否有持久的 authcookie

标签 c# asp.net cookies persistence forms-authentication

我需要在当前登录用户的 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/

相关文章:

c# - SqlDataSource UpdateCommand 被调用两次

c# - C# 中的类型推断不起作用?

c# - 与颜色矩阵对比

python - 当文件通过重定向提供服务时,如何使用 Python 请求下载文件?

cookies - 使用 Gatling 工具管理 jsessionid cookie

c# - 在某些字符前后修剪字符串

asp.net - 哪个更好 : to sort results at the database level or at the application level

javascript - 如何将货币文本框中的 * 转换为 000?

javascript - 使用 Javascript 编写 cookie 时,它​​是同步存储还是异步存储?

asp.net - 当 web.config 中的 DEBUG=FALSE 时,在 Debug模式下编译的 .Net 程序集(类库)会降低 ASP.NET 上的性能