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

Laravel 5 Laravel 5将数据从中间件传递到控制器,laravel-5,Laravel 5,我的中间件类似于Auth。它检查URL模式(例如:/rest/*),然后在请求中查找令牌,从数据库中检索相应的用户。之后,我想将该用户保存在一个变量中,以便稍后在以下任何控制器中返回该用户。最好的办法是什么 中间件: public function handle($request, Closure $next) { $token = Input::get("token"); // get user data from database $user = User::get_

我的中间件类似于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);
}
public function handle($request, Closure $next)
{
    $user = 'DB Call To Get User';
    $age = 20;
    $request->route()->setParameter('user', $user);
    $request->route()->setParameter('age', $age);
    return $next($request);
}
在控制器中:

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

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

在您的中间件中添加

Session::flash('user', $user);
别忘了在你的中间件顶部添加这个

use Session;
然后,当您需要访问您的用户时,请使用

Session::get('user');
这里有一个文档链接供参考 我正在使用Laravel 5.1。 要将参数从中间件传递到控制器,可以将其添加到请求对象

在中间件中:

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);
}
public function handle($request, Closure $next)
{
    $user = 'DB Call To Get User';
    $age = 20;
    $request->route()->setParameter('user', $user);
    $request->route()->setParameter('age', $age);
    return $next($request);
}
然后,您可以从以下任一参数获取控制器中的用户:

public function TestAction(Request $request, User $user, $age)
{}
或者显式地从请求对象:

public function TestAction(Request $request)
{
    $user = $request->route()->getParameter('user');
    $age = $request->route()->getParameter('age');
}
当然,您可以将数据临时闪存到会话或将其保存到会话本身并设置到期时间,但是如果您只需要它在请求的生命周期内持续,那么我认为这是一个好方法


希望这有帮助

如果只想访问登录用户,请使用Auth::user()并将其分配给变量。或者,例如,您可以通过使用Auth::user()->email获得一封用户电子邮件。谢谢,克里斯!这真的很有帮助!我不打算使用Auth。