让我们想象一下django支持的服务,每月向客户收费。所有者不希望他的客户与未付款的人共享帐户。当然,他知道有些人可能希望在帐户上协同工作,并且不想限制共享帐户使用同一个IP地址。

您如何使用相同的用户名/密码登录,同时使用django不超过3人?

我正在考虑在User类中实现一个计数器,但实际上并不知道这个想法有多好。

E.G:

Paul使用

登录

奖金问题:多次登录可能意味着什么问题以及应采取哪些措施来避免帐户用户之间的冲突。

有帮助吗?

解决方案

您可以使用Cookie并在此Cookie中存储GUID。如果用户没有GUID,请给他一个新的GUID。否则,请使用数据库中的GUID检查其cookie中的GUID。如果它是最近分配的三个GUID之一,则它是有效的用法。

实施例: 用户登录,获取GUID A.清除cookie。再次登录,获取GUID B.清除cookie。再次登录,获取GUID C.再次清除cookie。再次登录,获取GUID D.全部有效。他甚至可以使用包含GUID B或C的现有cookie再次登录,但如果他使用GUID A访问,那么他可能正在共享该帐户。 (或使用四个或更多Web浏览器。)

示例2: 用户1登录,获取GUID A.用户2登录,获取GUID B.用户3登录,获取GUID C.用户4登录,获取GUID D.此时,GUID A将变为无效,您将踢用户1。

要做到这一点,您只需跟踪分配给用户的三个最新GUID,每当用户清除其cookie时,用新GUID替换最旧的GUID。如果您对每个Web请求进行检查,则可以有效地阻止每四个(以及更多)用户。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top