hre*_*tic 8 php laravel laravel-5.4
在Laravel的早期版本中,在我需要以所有方法访问登录用户的控制器中,我曾经做过这样的事情:
class DashboardController extends Controller
{
private $user ;
function __construct(Request $request)
{
$this->middleware('auth');
$this->user = \Auth::user();
}
function func_1(){
$objects = Objects::where('user_id' , $this->user->id )->get();
}
function func_2(){
$objects = Objects::where('user_id' , $this->user->id )->get();
}
function func_3(){
$objects = Objects::where('user_id' , $this->user->id )->get();
}
Run Code Online (Sandbox Code Playgroud)
主要是因为我不喜欢默认语法,\Auth::user()
但在升级到5.4之后,这不再适用了,而且我得到null
了$this->user
但它在其他方法中工作正常.基本上,\Auth::user()
返回null
的__construct
方法,但在其他功能工作正常.
Mar*_*boc 15
正如文件所说:
在以前版本的Laravel中,您可以在控制器的构造函数中访问会话变量或经过身份验证的用户.这从未打算成为框架的明确特征.在Laravel 5.3中,您无法访问控制器构造函数中的会话或经过身份验证的用户,因为中间件尚未运行.
试试这个:
public function __construct()
{
$this->middleware('auth');
$this->middleware(function ($request, $next) {
$this->user = Auth::user();
return $next($request);
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5716 次 |
最近记录: |