如何在laravel的构造函数中获取当前用户ID?

WO *_*ers 3 laravel

我正在使用 laravel 5.7,但我无法在 __construct() 中获取当前用户 ID。

我也试过 Auth:id(),但它也不起作用。

如何在构造函数中获取当前用户 ID?

use Illuminate\Support\Facades\Auth;

class TestController extends Controller
{

    public $id;

    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware(function ($request, $next) {
            $this->id = Auth::user()->id;
            return $next($request);
        });
        dd($this->id);
    }
}
Run Code Online (Sandbox Code Playgroud)

当前输出为空。

pis*_*tor 6

您只能访问闭包中的会话。只需将您的代码重构为:

public function __construct()
{
    $this->middleware('auth');
    $this->middleware(function ($request, $next) {
        $this->id = Auth::user()->id;
        dd($this->id);

        return $next($request);
    });
}
Run Code Online (Sandbox Code Playgroud)

您现在可以$this->id在控制器方法中使用该值。

在您问题的示例中,设置 value 后$this->id,您将继续请求。由于您尝试$this->id在闭包范围之外访问,它仍然null在数据转储中。


Gur*_*ngh 6

返回后,您将不会转到下一条语句,这就是它不打印的原因。

如果你想在视图中使用它,那么不需要传入视图,你可以像这样简单地访问记录的用户ID

{{Auth->user->id}}
Run Code Online (Sandbox Code Playgroud)

如果您想在控制器中使用它,请确保您已登录。

有时会话过期,您将无法获得用户 ID

use Illuminate\Support\Facades\Auth;

class TestController extends Controller
{

    public $id;

    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware(function ($request, $next) {
        $this->id = Auth::user()->id;
         dd($this->id);
        return $next($request);
       });

    }
  }
Run Code Online (Sandbox Code Playgroud)