我需要创建一个cookie,只要用户调用User1(并且只有该用户)打开网站,它就会发送/读取。它应该包含,在User1登录后,即使他关闭了浏览器也不应该再将其记录下来。(所以当他重新打开浏览器和网站时,他仍然应该登录。有没有人知道我怎么做接近这个?我真的很感激,如果你给我一些评论的代码,因为我不是很了解所有这些事情,并且真的想了解你们做了什么。
内部Web应用程序需要cookie,因此不需要对其密码进行加密。如果你想一个“记住我”的解决方案。
(语言是aspx和VB。)
提前致谢
答案 0 :(得分:1)
如果您使用的是ASP.NET会员系统,那么当前用户的用户名为Membership.GetUser().UserName
(请参阅here和here),以便于检查。请记住,除非页面的所有路径都需要登录,否则可能没有当前用户。
要设置Cookie,请将其添加到Response.Cookies
集合。
编辑:此外,为避免用户退出时出现问题,如果不是,则特定用户会明确删除Response.Cookies
中的特殊Cookie。
答案 1 :(得分:0)
检测访问过该网站的用户是我认为您已经知道的内容所以我不会再进一步了解这一点。一旦确定了可以创建并发送自定义cookie的用户,就可以在有效的到期日期和时间设置cookie超时。虽然您可以根据需要将过期设置为远期,但有些浏览器可能会忽略它,但也有些旧版浏览器要求您的Cookie具有隐私策略集(请参阅Create a compact privacy policy)。在下面的示例中,代码DateTime.Now.AddMinutes(30)
定义了到期日期,即您将来需要设置的位。
表单身份验证Ticket对象在此处有详细记录:http://support.microsoft.com/kb/910443
Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket(1, _
UserName, _
DateTime.Now, _
DateTime.Now.AddMinutes(30), _
False, _
"", _
FormsAuthentication.FormsCookiePath)
' Encrypt the ticket.
Dim encTicket As String = FormsAuthentication.Encrypt(ticket)
' Create the cookie.
HttpContext.Current.Response.Cookies.Add(New HttpCookie(FormsAuthentication.FormsCookieName, encTicket))