设置在带有密钥的asp cookie上过期将无效

时间:2012-04-01 01:28:33

标签: cookies asp-classic

我有一个用经典asp编写的登录页面。我想将用户登录信息设置为asp cookie,以便下次他们到达页面时,他们会保持登录状态2周。

问题是当我在cookie上设置了一个到期时,其中包含了在浏览器关闭时cookie不会持久存在的密钥。

以下是我的代码示例:

response.cookies("user")("userId")=userId
response.cookies("user")("firstName")=firstName
response.cookies("user")("lastName")=lastName
response.cookies("user").expires=dateadd("d",14,now)

设置没有密钥的cookie有效,但使用密钥时过期不起作用。

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

这应该有效...只需将到期时间移动为您为密钥设置的第一个值:

response.cookies("user").expires=dateadd("D",14,Date())
response.cookies("user")("userId") = userId
response.cookies("user")("firstName") = firstName
response.cookies("user")("lastName") = lastName

答案 1 :(得分:0)

msigman的答案很好。在我的本地服务器上测试它。关闭并再次打开浏览器时Cookie仍然存在。

也许添加(子)域名?

response.cookies("user").domain="example.com"
response.cookies("user").expires=dateadd("D",14,Date())
response.cookies("user")("userId") = userId
response.cookies("user")("firstName") = firstName
response.cookies("user")("lastName") = lastName

答案 2 :(得分:0)

您可以访问您的 IIS 面板吗?我想知道您是否设置了使 cookie 过期的设置?另一件事可能是尝试对过期进行硬编码并对其进行测试以查看它是否也失败?

response.cookies("user").expires=#May 30,2021#
response.cookies("user")("userId") = userId
response.cookies("user")("firstName") = firstName
response.cookies("user")("lastName") = lastName

如果不是 IIS 设置,并且执行硬编码日期测试有效,则日期可能不符合预期。这里甚至还有一篇关于此的文章:

HttpCookie Expires and IIS setting

您也可以尝试这些方法来查看日期发生了什么,也可能是格式问题,但请尝试这些方法并将它们与您的预期结果进行比较:

Year(Now) '' Year in 4 digits
Month(Now) '' Month without leading zero
Day(Now) '' Day of the month without leading zero
DateAdd("d", <numofdays>, Now) ''pretty much what you are doing now

这里有一个引文链接: ASP formatting date