3

我有一个要接管的现有站点,现在它将当前登录用户的 id 存储在会话变量中(如果完全登录 - 否则我确定它是空字符串或null 什么的)。

客户现在希望,在某人登录后,无限期地“保持”他们在该计算机上的登录。

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

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

有人认为这种观点有任何问题吗?你会推荐一些不同的东西吗?我真的不想重构一堆现有的代码,而只是把它放在上面......

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

4

5 回答 5

1

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

这适用于内部应用程序,具有与您相同的客户需求,并且有效……并使客户满意。

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

于 2008-12-06T22:25:33.360 回答
0

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

于 2009-02-17T18:31:43.170 回答
0

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

于 2009-03-06T15:26:51.913 回答
0

我建议使用 Enterprise Library Crypto App Block 来存储一个加密的 cookie,它只不过是一个 GUID。获取 GUID,并使用数据库中的会话表来跟踪用户信息。

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

不建议将会话对象用于用户信息,因为它不适用于网络场,除非您使用数据库来获取会话状态。

于 2009-03-06T15:34:46.060 回答
0

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

于 2009-03-06T16:39:13.220 回答