Laravel 每个请求都会与一个查询 users 表 查询语句

看日志的时候 发现每个API请求开始都有一条 查询User表的语句,

select * from `users` where `id` = 1 limit 1    

无论是否是有 jwt 中间件,都有查询。 这个语句是哪儿来的? 怎么解决?

3AC59C22-74E3-48FE-85D9-1A8FDF482795.png

7CA23803-F4F4-40C9-AC7B-B710AF37997D.png

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 5

如果你有加 api.auth 这个中间件的话就有进行查询,系统会自动检索认证用户。

4年前 评论
Lettbee (楼主) 4年前
ORH (作者) 4年前

全局搜索一下Auth::user Auth::check Auth::id 看看,尤其是中间件,服务提供者这两个文件夹呀

4年前 评论
yema

没有使用JWT吗?如果有使用那么只要当前请求中携带token那么JWT就会默认解析一次。好像不管你是不是走JWT中间件,应该是安装JWT扩展包时候,有服务注册到容器中了。每次请求都会加载。这个我找到了是哪句代码的问题,但是没法去掉

4年前 评论

根据初步验证,只要传入了 bearer token , laravel 都要走一次 默认的auth guard。

因为我后台接口是使用的非默认guard , 且在中间件中做了一次验证用户是否有效,所以造成了 查询两次不同的guard(如图1)。

如果使用默认guard 就不会有这种情况。

不管使用jwt 还是自带的 token 都会有这种情况。

于是写了个中间, 动态设置 auth guard 就解决了这个情况

4年前 评论
jenkincei

auth中间件会获取认证用户,既然要获取用户,就需要查表。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!