如何通过基于每个席位的方法来限制 SaaS 的应用程序使用?

问题描述 投票:0回答:3

我正在开发企业 SaaS 应用程序,我的一些用户希望按按席位收费。

我想知道如何确保访问确实受到限制。我现在可以看到,即使公司只支付了一个席位的费用,但具有相同登录名/密码的人同时从不同的 IP 地址、不同的用户代理进行登录。

从业务和技术角度实施限制的最佳方式是什么?我不想太严格,同时我希望企业为他们实际需要的座位数量付费。

session authentication cookies session-cookies saas
3个回答
0
投票

不要通过用户代理过滤,我认为这太严格了,有些人可能安装了多种浏览器。按 IP 过滤也可能很棘手,某些用户可能拥有定期更改的动态 IP。

我的一个想法是强制用户安装浏览器扩展,浏览器扩展可以从操作系统上的某些内容生成唯一的 ID。也许使用 HDD 卷号或 Windows 序列号,任何该计算机独有的内容。

一旦您拥有了这个唯一的 ID,每次用户登录时都可以在后端跟踪中使用它。如果用户超过一定数量的席位,您可以阻止用户帐户或先联系他们。

允许用户一定程度的自由也是一个好主意,这样,如果他们有一个席位,那么后端将允许一个月(滚动期)可能有 2 个席位,以防万一用户购买新电脑或安装新硬盘。


0
投票

使用 IP 似乎是一个坏主意 - LAN 中的人们(通常)都会拥有相同的 IP。

假设 PHP 没有 API 来访问与当前不同的检查会话 - 一个想法是:

  • 如果您还没有这样做,那么对于您发出的每个登录 cookie,还要发出一个唯一的 ID(UUID 将满足您的目的)
  • 将这些 id 存储在某处(在 java 中,您可以将它们存储在应用程序上下文中,也许在 php 中,您需要一个数据库表 - 我不是 php 专家),以及两个时间戳:“会话开始”和“最后”活动”
  • 在每个请求中,在“上次活动”中记录当前时间戳

然后,当您收到新请求时,计算其他活跃请求的数量

  • last activity >= current session start
  • last activity >= now - session TTL
    (仅在无法及时修剪过期会话时才需要)

这应该会给你占用的座位数。

请注意,直到多余用户登录后,并且直到您看到其他会话中的活动为止,您才会不会注意到席位数量的违规行为 - 我看不到任何解决此问题的方法,因为您不这样做不知道席位何时空缺(好吧,您可能会说只有在其会话到期时才空缺,但这似乎不公平)。


0
投票

城堡
  • Arkose 实验室
  • 真实灵魂
  • 等等。等等 - 有很多!大多数也是相当实惠的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.