在 Laravel 中用户授权后创建全局权限变量

Creating global permissions variable after user authorization in Laravel

我想在用户通过身份验证后设置全局变量 - 让我们称之为 permissions。该变量应该在控制器和视图中可用。

实现它的最佳方法是什么?现在,在每种方法中,我都必须执行数据库查询并检查不是最佳的用户角色。

我知道我可以在appserviceprovider中声明view::share方法来将变量传递给视图,但是boot方法是在用户通过身份验证后执行的。

更新

我创建了从 Controller 扩展而来的 BaseController。

基地控制器:

class BaseController extends Controller {

  public $permissions;

  public function __construct() {
      $this->permissions = GroupRoles::where('id', Auth::user()->id)->first();
  }

}

然后我试图从 BaseController 扩展的 UserController 访问权限变量。正在尝试获取非对象的访问权限。我想是因为BaseController的构造函数是在中间件之前构造的。

class UserController extends BaseController {

  public function showPermissions() {
    return var_dump($this->permissions);
  }

}

最终解决方案

基石是在 BaseController 中使用 $this->middleware(function ($request, $next)

在控制器中尝试它或创建您自己的 BaseController 然后从它扩展您的控制器,在 BaseController 中您可以这样做

public $permissions;

public function __construct()
{
   $permissions = Permissions::all() //For example
   $this->permissions = $permissions
}

然后你可以像这样从每个控制器访问它$this->permissions