使用JWTAuth时,发送到API的每个签名请求都会执行检索用户的数据库查询,即:
select * from `users` where `id` = '1' limit 1
对于我的大多数路由,此查询都是多余的,我想将其删除。在this拉取请求中,有关于此主题的讨论。虽然,我已经在使用自定义中间件,但我想JWTAuth提供的中间件仍在那里。
如何删除冗余用户数据库查询?
答案 0 :(得分:0)
我可以从您引用的那篇文章的评论中读到,您必须创建自定义中间件并检查令牌是否对check
函数有效,这意味着您还需要手动验证用户身份签署您的申请
使用check()和checkOrFail()
是的,我肯定会建议您添加自己的中间件。
因此,如果您不想不必要地查询数据库,则需要手动Authenticate
和check
获取令牌有效性。
答案 1 :(得分:0)
导致此行为的中间件是 ThrottleRequests ,在 \ Illuminate \ Routing \ Middleware \ ThrottleRequests 中更明确resolveRequestSignature()
和$request->user()
。这两项功能都在执行protected $middlewareGroups
。
这是由'api' => [
'throttle:60,1',
'bindings',
]
继承的,其中包含默认的 api 中间件组:
node_t* newSymbol = malloc(sizeof(node_t));
newSymbol->symbol.name = strdup(name); //name is a (const) char* that is a parameter to function I'm in.
newSymbol->symbol.addr = addr;