[已解决] Passport 实现多端登陆且只不生成多余的 token
设计
登陆:
- 前端传入账户密码来请求服务端 (Laravel Passport 密码授权令牌)
- 若数据库内已有
token
存在,则返回已存在的token
- 若数据库中无
token
,则创建新的token
并返回。
问题
数据库中存在的 token
不是 access_token
,在网上查找过后,只有根据 token
获取用户信息,没有根据 token
获取 access_token
的方法。
期望
请问如何才能根据 token
获取 access_token
?
或者如何才能用 Laravel Passport 实现多端登陆且只在数据库中储存一条 token 记录?
解决方法
在初次请求时,将 access_token
和 refresh_token
储存到 Redis
。
当再次请求时,先从 Redis
中获取,若存在则返回,否则请求 /oauth/token
以生成 tokens
。
登陆之前先判断是否已经存在,如果存在就回收了。
另外还需要定时清除已经标记为过期的记录…
这个问题怎么搞啊,那个oatuh_refresh_token表里会产生大量无用的数据。。。
看了laravel自带的users表里,默认带一个remeber_token,应该是用来解决这个问题的。
可以通过事件去处理。