2011-03-27 85 views
0

注意:这个问题是关于在哪里存储登录尝试和当前登录状态在哪里存储登录尝试和当前登录状态,Cookie或会话?

我正在构建一个Web应用程序,用户将被要求注册以获取身份验证详细信息,以便在登录系统时使用该身份验证信息,但我是一名安全的新手。

而且我希望用户每个会话只能登录一次,因此用户不能有多个现有的成功身份验证,即无法同时从计算机a和计算机b登录,或者已经成功进行身份验证存在相同的用户或未被注销。

我想我需要跟踪用户的位置,登录尝试和当前登录状态;以便相应采取行动。 我正在寻求关于在cookies和会话之间使用什么的建议,如何跟踪用户的位置以及更多建议。

预先感谢您。

+2

在大多数情况下,Cookie会存储您的会话ID。似乎有点愚蠢的区别。 – 2011-03-27 06:22:39

回答

0

cookies与会话之间的主要区别是cookie存储在用户的浏览器中,而会话不是。这种差异决定了每种产品最适合用于哪种。

一个应该去饼干来存储我们想知道什么时候用户在将来返回到网页(例如,记住我在这台计算机上的登录页面上的复选框使用cookie记住用户,当他回报)。
会话应该用于记忆该特定浏览器会话的某些内容(例如用户名,以显示在每个页面上或需要的地方)。

良好读取:

+0

好的。所以简单来说,如果我想在我的登录表单中包含记住我的复选框,我将不得不为任何人设置一个cookie,检查并且他们没有注销,或者是否仍然存储细节,即使有人击中注销按钮? – 2011-03-27 15:33:46

2

这些无。
您必须使用数据库来完成您的需求。
您必须将当前会话ID,登录尝试和登录状态存储在数据库中。
不知道什么是位置,但。

虽然cookies应该用于授权本身,但要在服务器和客户端之间传输会话ID。

+0

谢谢你的想法。根据位置我指的是登录用户的国家,城市或城镇。 – 2011-03-27 15:29:48

+0

@理论上的安东尼。在实践中你永远不会使用其他任何东西。无论如何,这个问题是关于不同的问题。 – 2017-08-08 08:28:48

+0

@Anthony您正在使用cookie将会话ID存储在**客户端**上。你知道,在哪里很难找到数据库。 – 2017-08-08 09:24:09

1

据我所知,您无法跟踪和比较服务器上的会话,以检查同一“已认证”用户的活动连接。我假设你在数据库中跟踪你的用户登录名和密码,然后一旦他们通过身份验证,你就设置一个会话变量来跟踪他们在给定的最终用户设备上的当前登录。

我能想象的最好方法(从断开的常规故障之外,用户不能注销等)将有一个表,你的数据库来跟踪登录和状态:

  • 用户ID
  • IP地址(头/浏览器拉)
  • 上次登录时间戳记(UTC)
  • 当前登录状态(布尔)
  • 最后已知的服务器会话值

一旦到位,您可以创建突发事件:

  • 登录我从一个登录的设备,如果我再次成功地在其他地方通过让服务器销毁保存在数据库中的会话,并替换它验证与新设备的有效会话
  • 检查认证后的IP地址,要么锁定用户,也可以使用上面的方法来注销远程会话

你的想法,我希望。

+0

我明白了,这很有帮助。然而,某处你说“一旦他们进行了身份验证,你就设置了一个会话变量来跟踪他们在给定和用户设备上的当前登录”,我认为这是一个好主意,但是每当用户被认证时,这意味着系统将创建一个新的会话ID,允许用户一次登录多次。 – 2011-03-27 16:47:32