使用JWTAuth和Laravel进行冗余数据库查询

时间:2018-02-12 11:26:37

标签: laravel jwt

使用JWTAuth时,发送到API的每个签名请求都会执行检索用户的数据库查询,即:

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

对于我的大多数路由,此查询都是多余的,我想将其删除。在this拉取请求中,有关于此主题的讨论。虽然,我已经在使用自定义中间件,但我想JWTAuth提供的中间件仍在那里。

如何删除冗余用户数据库查询?

2 个答案:

答案 0 :(得分:0)

我可以从您引用的那篇文章的评论中读到,您必须创建自定义中间件并检查令牌是否对check函数有效,这意味着您还需要手动验证用户身份签署您的申请

  

使用check()和checkOrFail()

     

是的,我肯定会建议您添加自己的中间件。

因此,如果您不想不必要地查询数据库,则需要手动Authenticatecheck获取令牌有效性。

答案 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;
相关问题