Laravel 每个控制器的用户对象(如果经过身份验证)
我现在面临的“问题”是,对于用户经过身份验证时使用的每个控制器,我必须请求Laravel 每个控制器的用户对象(如果经过身份验证),laravel,controller,laravel-5.1,middleware,Laravel,Controller,Laravel 5.1,Middleware,我现在面临的“问题”是,对于用户经过身份验证时使用的每个控制器,我必须请求$user=Auth::user()。例如: public function store(Request $request) { $user = Auth::user(); $building = Building::findOrFail($request->building); $user->buildings()->save($building); return r
$user=Auth::user()代码>。例如:
public function store(Request $request)
{
$user = Auth::user();
$building = Building::findOrFail($request->building);
$user->buildings()->save($building);
return response(['status' => 'OK']);
}
您可以想象,我需要多次请求用户对象,即使在这个控制器中也是如此。我该如何改进这一点?我考虑过在控制器父类中声明一个用户变量,或者使用中间件。我读过关于依赖注入的内容,但我不完全理解它,也不知道如何很好地实现它。您可以在路由中设置身份验证
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'ProfileController@show'
]);
或在控制器的构造中
public function __construct()
{
$this->middleware('auth');
}
然后在控制器内部,您可以通过
$request->user()
您可以在路由中设置身份验证
Route::get('profile', [
'middleware' => 'auth',
'uses' => 'ProfileController@show'
]);
或在控制器的构造中
public function __construct()
{
$this->middleware('auth');
}
然后在控制器内部,您可以通过
$request->user()
您可以创建一个父控制器,比如BaseController,并从此控制器扩展每个控制器
class BaseController extends Controller{
protected $user;
function __construct(){
$this->$user = Auth::user();
}
}
现在在你的页面控制器中说
class PagesController extends BaseController{
function __construct(){
parent::__construct();
}
public function store(Request $request)
{
$building = Building::findOrFail($request->building);
$this->user->buildings()->save($building);
return response(['status' => 'OK']);
}
}
您可以创建一个父控制器,比如BaseController,并从此控制器扩展每个控制器
class BaseController extends Controller{
protected $user;
function __construct(){
$this->$user = Auth::user();
}
}
现在在你的页面控制器中说
class PagesController extends BaseController{
function __construct(){
parent::__construct();
}
public function store(Request $request)
{
$building = Building::findOrFail($request->building);
$this->user->buildings()->save($building);
return response(['status' => 'OK']);
}
}
谢谢你的反馈。我已经在想如何用这种方式实现它,这是非常有用的!谢谢你的反馈。我已经在想如何用这种方式实现它,这是非常有用的!我非常喜欢这个解决方案。我不知道这是否是解决这个问题的“正确”方法,但我很清楚发生了什么,所以我想我会用这个。谢谢你的反馈,我实现了这一点,效果非常好!非常感谢你!很高兴它起作用了。如果这有帮助,您应该接受它。:)我非常喜欢这个解决方案。我不知道这是否是解决这个问题的“正确”方法,但我很清楚发生了什么,所以我想我会用这个。谢谢你的反馈,我实现了这一点,效果非常好!非常感谢你!很高兴它起作用了。如果这有帮助,您应该接受它。:)