0

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

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

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

更新

我创建了从 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);
  }

}

最终的解决方案

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

4

1 回答 1

0

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

public $permissions;

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

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

于 2017-09-03T10:56:31.620 回答