我了解Flask-login的方式是,一旦通过身份验证,它就会设置一个cookie,其中包含随每个请求一起发送的用户ID,以便服务器可以将请求与(登录)用户。用户ID几乎被编码为用户ID和一些浏览器设置(用户代理,我认为)的功能。使用flask-login确保单个用户每个帐户
由此产生了一些问题,也许有人可以对它们发表评论并提出解决方案。
- 客户端可以通过猜测用户标识并使用相同的cookie编码功能来请求内容(如果它伪装成登录用户)。
- 多个用户可以在两台不同的计算机共享帐户凭据时使用同一个用户帐户(我想限制这一点,但我想允许用户在一台计算机上打开同一会话的多个选项卡)。
我可以实现一个服务器端机制,该服务器端机制在身份验证时生成一个随机秘密令牌,并与用户记录一起存储,并成为会话cookie。我可以使用它来确保只有经过身份验证的用户才可以在单台机器上登录(希望一台机器上的多个选项卡仍在工作)。 flask-login是否已经包含这样的方法,并且这通常是一个好方法来满足我的需求?
您可能想要将用户限制在单个会话中,但我希望听到我说:请不要。您应该将会话视为基础层(匿名用户),然后用户帐户在登录时链接到会话。临时状态应与会话关联,而不是用户帐户。许多网上商店已经这样做了:例如,每个会话中的购物车都是独立的。要“转移”购物车,许多网站都会让您保存购物车并在任何会话中重新打开。 – sleblanc 2015-04-03 11:28:47
除了在URL和认证会话中编码的内容之外,我不必维护任何临时状态。这不适用于我的情况。 – orange 2015-04-03 13:56:18