【发布时间】:2020-10-01 06:42:26
【问题描述】:
在一个使用 .Net Core 3.1 开发的 Rest Api SaaS 项目中。
当用户的订阅到期(需要付费)时,采用什么样的方式比较好。
我想到了两种方法,但我认为这两种方法都会有一些问题。
方法一)在生成JWT时检查订阅状态,如果订阅期已过则不生成JWT:
如果我使用这种方法;
优势:由于订阅到期的用户不会获得令牌, 他们将无法访问其他端点。 我认为这将非常安全,无需进行任何其他编码工作。
缺点:当我需要将用户重定向到支付页面时, 由于没有令牌,我将不得不为支付端点做一项特殊的工作。(示例:密码重置方法) 我会用查询字符串得到它,我想我可以为这个方法创建一个特殊的标记。 但我认为可能存在安全漏洞,因为我无法使用标准授权方法保护此进程?
方法2)即使订阅过期也会生成jwt,但是会限制会员:
如果我使用这种方法;
优势:我可以毫无问题地使用我的标准授权方法 当我需要将用户引导到支付端点或另一个端点时。 我将与 jwt 一起使用,安全漏洞将大大减少。
缺点:我需要为订阅期到期的用户确定应用程序上无法访问的端点 我需要在中间件中编写一个工作服务,使它们无法访问。 (喜欢权限方法) 这都会做额外的编码工作,每个端点都需要额外的工作。
这是我的想法......
或其他解决方案...
我们应该如何限制订阅到期的用户,我们应该如何处理?
非常感谢您的信息分享。
【问题讨论】:
-
JSON Web 令牌用于身份验证。用户的订阅是否过期是授权的问题,应该单独处理。
标签: c# asp.net-core-webapi payment saas