我正在使用 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)
当前输出为空。
您只能访问闭包中的会话。只需将您的代码重构为:
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在数据转储中。
返回后,您将不会转到下一条语句,这就是它不打印的原因。
如果你想在视图中使用它,那么不需要传入视图,你可以像这样简单地访问记录的用户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)
| 归档时间: |
|
| 查看次数: |
4393 次 |
| 最近记录: |