【问题标题】:Prevent Refresh Token From Being Created Multiple Times防止多次创建刷新令牌
【发布时间】:2020-10-13 01:24:31
【问题描述】:
我正在尝试防止多次创建刷新令牌。
我有一个登录端点,http://localhost:8000/api/login。
当用户使用用户名和密码向该端点发送 POST 请求时,后端将生成 access_token 和 refresh_token 并在响应中返回。然后将刷新令牌保存到数据库中。
问题是用户可能会尝试多次发送 POST 请求,这将导致多个刷新令牌存储在单个设备的数据库中。如果以后我想撤销特定设备的令牌,现在单个用户有多个刷新令牌,这可能会导致问题。
【问题讨论】:
标签:
authentication
jwt
token
jwt-auth
【解决方案1】:
我不确定是否正确理解了这个问题,但这不是客户要阻止的工作吗?假设您的客户端是一个移动应用程序,只要用户登录,他就不应该再看到登录选项,除非他手动注销,或者令牌过期,对吗?
如果您的意思是用户使用 Postman 之类的工具从同一设备或浏览器发布登录请求(我怀疑普通用户会尝试),在这种情况下,我认为您甚至不应该关心。只要用户提供有效的凭据(用户名和密码),您就会发回一对新的令牌。如果用户进行全局注销(从所有设备),您无论如何都会使所有刷新令牌无效,如果他从一个特定设备注销,您将仅删除该一个令牌(是的,为该设备创建的其他令牌仍然存在,但它们最终会过期)。