我们正在构建一个API(PHP Laravel),它将为几个不同的客户端(Web,Windows桌面和更高版本的ios / android)提供服务。我们刚刚开始处理认证部分,到目前为止,JWT似乎非常合适。由于我们的应用程序的敏感性,我们希望限制单个用户可以拥有的并发会话数量。这个"限制"是动态的,具体取决于所访问的API端点。
到目前为止,我们在每次通话时都会刷新令牌。我正考虑将列入黑名单的令牌放入Redis缓存以及用户当前的刷新"有效令牌。因此,如果用户(或模仿者)尝试登录并且存在现有的有效令牌,则他们无法登录。第一个"会话"必须注销哪个会将当前令牌列入黑名单并清除"有效"令牌;允许新的"会话"开始。如果需要2或3个会话,也许我们可以使用X有效令牌。
这有更好的策略吗?还是有任何改进的建议?