我正在开发企业 SaaS 应用程序,我的一些用户希望按按席位收费。
我想知道如何确保访问确实受到限制。我现在可以看到,即使公司只支付了一个席位的费用,但具有相同登录名/密码的人同时从不同的 IP 地址、不同的用户代理进行登录。
从业务和技术角度实施限制的最佳方式是什么?我不想太严格,同时我希望企业为他们实际需要的座位数量付费。
不要通过用户代理过滤,我认为这太严格了,有些人可能安装了多种浏览器。按 IP 过滤也可能很棘手,某些用户可能拥有定期更改的动态 IP。
我的一个想法是强制用户安装浏览器扩展,浏览器扩展可以从操作系统上的某些内容生成唯一的 ID。也许使用 HDD 卷号或 Windows 序列号,任何该计算机独有的内容。
一旦您拥有了这个唯一的 ID,每次用户登录时都可以在后端跟踪中使用它。如果用户超过一定数量的席位,您可以阻止用户帐户或先联系他们。
允许用户一定程度的自由也是一个好主意,这样,如果他们有一个席位,那么后端将允许一个月(滚动期)可能有 2 个席位,以防万一用户购买新电脑或安装新硬盘。
使用 IP 似乎是一个坏主意 - LAN 中的人们(通常)都会拥有相同的 IP。
假设 PHP 没有 API 来访问与当前不同的检查会话 - 一个想法是:
然后,当您收到新请求时,计算其他活跃请求的数量
last activity >= current session start
last activity >= now - session TTL
(仅在无法及时修剪过期会话时才需要)这应该会给你占用的座位数。
请注意,直到多余用户登录后,并且直到您看到其他会话中的活动为止,您才会不会注意到席位数量的违规行为 - 我看不到任何解决此问题的方法,因为您不这样做不知道席位何时空缺(好吧,您可能会说只有在其会话到期时才空缺,但这似乎不公平)。
城堡