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

时间:2017-09-03 10:11:49

标签: laravel laravel-5.5

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

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

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

更新

我已经创建了从Controller扩展的BaseController。

BaseController:

class BaseController extends Controller {

  public $permissions;

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

}

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

class UserController extends BaseController {

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

}

最终解决方案

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

1 个答案:

答案 0 :(得分:0)

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

public $permissions;

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

然后您可以从每个控制器访问它,例如$this->permissions