用于保持某人登录的ASP.Net会话和cookie

时间:2008-12-06 22:13:28

标签: asp.net session cookies

我有一个我正在接管的现有网站,现在它在会话变量中存储当前登录用户的ID(如果已登录) - 否则我确定它是空字符串或null或其他东西)。

客户现在想要在有人登录后“保持”他们无限期地登录该计算机。

ASP.net会话的最长空闲时间为1天,我相信。该网站在Flash部分写得不是很好(整个前端是闪存),闪存将处理登录,然后,只要闪存没有重新加载,假设用户仍然“登录”

我认为我的解决方案是同时存储一个带有一些GUID值的客户端cookie,并在数据库中保存相关的用户ID ......有点像永不过期的会话。因此,当页面加载时,我可以检查我的cookie,使用它来从数据库中选择用户ID,如果我们找到一个,则设置用户23登录的会话值。

有没有人看到这个观点有任何问题?你会推荐不同的东西吗?我真的不想重构一堆现有的代码,但只是把它放在最顶层......

PS - 安全性并不是真正的问题。他们有人登录的唯一原因是我们可以跟踪一个人的订单,但没有钱通过这个网站转手。用户也无法查看或编辑任何个人信息。

5 个答案:

答案 0 :(得分:1)

我就是这样做的。我实际上有一个cookie来保存他们的登录名和密码,这样我就可以在他们没有登录时自动登录。我会在几天不活动后使cookie过期。缺点是每个人忘记了他们的密码,因为他们真正必须输入密码的唯一时间是他们从延长的休假时间回来。

这是针对内部应用程序,具有与您相同的客户需求,并且可以正常运行......并使客户满意。

我们最终可能做的一件事就是使用Windows身份验证,在这种情况下实际上可能会更好。

答案 1 :(得分:0)

这就是我这样做的方式,但它的问题(至少我认为是一个问题)是当你将用户名和密码存储在cookie中时,添加cookie时没有任何加密。如果您在浏览器中查看cookie,那么用户名和密码就会显示在当天。是否可以对您存储的cookie进行某种加密?或者你会如何处理?

答案 2 :(得分:0)

检查此博客发布http://timmaxey.net/archive/2009/03/06/asp.net-cookie-auto-log-in.aspx基本上您需要使用guid系列保存cookie,并且令牌,在我的情况下,令牌一直在变化,系列是基于生成的在诸如guid和id组合之类的东西上,然后guid始终与用户一起存储。有一个cookie表存储此信息等...非常安全,不是100%,但非常好... Tim Maxey

答案 3 :(得分:0)

我建议使用企业库加密应用程序块来存储加密的cookie,这只是一个GUID。获取GUID,并使用数据库中的会话表来跟踪用户信息。

在会话开始事件中,获取用户信息并将其缓存。

建议不要将用户信息用于会话对象,因为它不能在Web场上运行,除非您使用数据库进行会话状态。

答案 4 :(得分:0)

你基本上就是在这个时候滚动你自己的会话状态了,我很好。但是,我不会将用户名/密码存储在cookie中(即使加密)。没有办法从服务器端过期。您可以随时删除表中的行以强制用户再次登录,但如果他们持有用户名/密码,则他们会将密钥保存到王国。