Laravel 5将数据从中间件传递到控制器

San*_*mja 9 laravel-5

我的中间件类似于Auth.它检查URL模式(例如:/ rest/*),然后在请求中查找令牌,从数据库中检索其对应的用户.之后,我想将该用户保存在变量中,以便稍后可以在以下任何控制器中返回它.什么是最好的方式?

中间件:

public function handle($request, Closure $next)
{
    $token = Input::get("token");
    // get user data from database
    $user = User::get_user_from_token($token);
    // ?? -> How to pass $user to controller, so that ..
    return $next($request);
}
Run Code Online (Sandbox Code Playgroud)

在控制器中:

public function profile_save() {
    // I get the user back here without querying again
    $user = ???
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*end 7

我会将数据刷新到会话中.当您闪存数据时,它只会保留到下一个请求.

在你的中间件添加

Session::flash('user', $user);
Run Code Online (Sandbox Code Playgroud)

不要忘记在中间件的顶部添加它

use Session;
Run Code Online (Sandbox Code Playgroud)

然后,只要您需要访问您的用户使用

Session::get('user');
Run Code Online (Sandbox Code Playgroud)

以下是参考文档的链接 http://laravel.com/docs/5.0/session#flash-data