laravel jwt认证后的用户登录状态信息是如何存储的?

大神好。我的项目采用jwt认证,用户登录后产生的token,是放在header里下发给客户端的,客户端每次请求携带token。认证通过后继续业务。流程这样没错吧。(这样有安全问题吗?)

另外,用户登录后。在token有效期内,用户后续向服务端发请求,我想获取用户信息是不是可以用:
$user = auth()->userOrFail();$user = auth()->user(); 来获取用户信息,
但是据我看源码这两个方法都是实时去查询数据库的,这样并不好,访问量大时会给数据库带来压力。有没有一种办法能像 session 机制一样,从内存中读取用户登录状态信息?
如果使用了jwt的方案,还需要向sessoin来维护登录状态,那感觉jwt多余了。

[后面添加]
翻了一下jwt源码:貌似 auth()->getUser()是从缓存中获取用户信息的。

阅读 8.8k
3 个回答

找到答案了,是从jwt载荷中获取用户表主键,有这个主键一切好办。
auth()->playload()

用jwt,用户信息在客户端,不用去数据库查

用户信息只有第一次校验时,会查出来,毕竟不查,你不也不知道这个用户还在不在(有没有被删掉),,之后通过看守器获取用户模型实例,都是从类静态属性中获取的了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题