0

在我的一个中间件中,我使用了类似这样的东西

    $user = [ 
    'name' => 'noob',
    'phone' => '87548154'
   ]; /* which actually comes from redis cache */


    $request->attributes->set('user', $user);

在控制器中我像使用它一样

$request->get('user')['name'] 

或者

$request->get('user')['phone'] 

由于这看起来非常灵活,我想将更多数据附加到 $user 数组中。在 laravel 文档中,它上面写的 Request 类的 get() 方法是

 * Gets a "parameter" value from any bag.
 * This method is mainly useful for libraries that want to provide some flexibility. If you don't need the
 * flexibility in controllers, it is better to explicitly get request parameters from the appropriate
 * public property instead (attributes, query, request).
 * Order of precedence: PATH (routing placeholders or custom attributes), GET, BODY

我的问题是,这会是个好主意吗?因为最常用的数据已经附加在中间件中。这样我就不必一次又一次地在控制器方法中编写额外的代码。它会影响高流量服务器的性能吗?

4

1 回答 1

0

我个人从不这样工作。您可以使用外观从任何地方访问当前用户,Auth如下所示:

\Auth::user()

它使您在不需要时永远不会发送它,并且仍然可以在任何地方(控制器、模型、刀片或其他所有东西)使用它。

然后访问您的属性:

\Auth::user()->phone

等等...

于 2018-03-15T10:06:35.293 回答