laravel 5.5 在构造函数中获取用户详细信息
laravel 5.5 Get user details inside constructor
我正在构建一个具有多个用户角色和操作的应用程序。我确实遵循了官方 laravel 文档 (https://laravel.com/docs/5.5/middleware#middleware-parameters)。
但是在我的控制器的构造函数中(从我调用上述中间件的地方)我使用 Auth facade 来获取用户详细信息。我知道如何使用 Auth facade,我已经在我的应用程序中的几个地方实现了它。但是当我在构造函数中使用它时,它 returns null(在登录状态下 - 我仔细检查过)。
我是这样实现的,我必须调用两个控制器(因为只有注册用户才能访问该页面)
public function __construct()
{
$role = Auth::user()->role;
$this->middleware('auth');
$this->middleware('checkRole:$role');
}
PS:我试图将 $role 变量初始化为受保护的并且在构造函数之外,但仍然无法正常工作。任何建议都会有所帮助
谢谢。
这是因为构造函数是在中间件之前创建的,这就是它返回 null 的原因。
这个答案可能会解决您的问题:
如果您对 "front-end" 用户和 "admin" 使用相同的用户 table 并且想在管理控制器的构造函数中应用条件。
您可以在下面使用。
auth()->user()
并且在构造函数中你可以使用下面的代码。
public function __construct(){
$this->middleware(function ($request, $next) {
if(auth()->user()->hasRole('frontuser')){
return redirect()->route('home')->withFlashMessage('You are not authorized to access that page.')->withFlashType('warning');
}
return $next($request);
});
}
但我更喜欢在单独的中间件中处理这些 class 而不是在控制器构造函数中编写这些。
我正在构建一个具有多个用户角色和操作的应用程序。我确实遵循了官方 laravel 文档 (https://laravel.com/docs/5.5/middleware#middleware-parameters)。
但是在我的控制器的构造函数中(从我调用上述中间件的地方)我使用 Auth facade 来获取用户详细信息。我知道如何使用 Auth facade,我已经在我的应用程序中的几个地方实现了它。但是当我在构造函数中使用它时,它 returns null(在登录状态下 - 我仔细检查过)。
我是这样实现的,我必须调用两个控制器(因为只有注册用户才能访问该页面)
public function __construct()
{
$role = Auth::user()->role;
$this->middleware('auth');
$this->middleware('checkRole:$role');
}
PS:我试图将 $role 变量初始化为受保护的并且在构造函数之外,但仍然无法正常工作。任何建议都会有所帮助
谢谢。
这是因为构造函数是在中间件之前创建的,这就是它返回 null 的原因。
这个答案可能会解决您的问题:
如果您对 "front-end" 用户和 "admin" 使用相同的用户 table 并且想在管理控制器的构造函数中应用条件。
您可以在下面使用。
auth()->user()
并且在构造函数中你可以使用下面的代码。
public function __construct(){
$this->middleware(function ($request, $next) {
if(auth()->user()->hasRole('frontuser')){
return redirect()->route('home')->withFlashMessage('You are not authorized to access that page.')->withFlashType('warning');
}
return $next($request);
});
}
但我更喜欢在单独的中间件中处理这些 class 而不是在控制器构造函数中编写这些。