如果用户注销,是否有任何方法可以限制令牌。
我确实遵循了带有keycloak的Spring boot 3的这个解决方案将Keycloak Spring Adapter与Spring Boot 3一起使用
afaik,您不能使已发行的令牌无效。这是您应该将访问令牌的到期时间设置得尽可能短并使用刷新令牌来获取访问令牌的原因之一。
回答您的问题:如果用户注销,则调用服务器以缓存/保留该令牌。如果您使用的是网关服务器(或任何等效服务器),请检查传入请求中保存在数据库/内存中的令牌列表。如果找到匹配项,则返回拒绝访问错误。
如果您在 redis 中缓存,则计算令牌的到期时间并与 redis 设置相同。这消除了您从 redis 中删除密钥的额外责任。
以上建议不是理想的解决方案,尤其是您拥有高流量的网站。另外,你必须考虑是否真的需要通过计算权衡来实现令牌失效(基本上是限制)。