我想在用户通过身份验证后设置全局变量 - 让我们调用它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 中使用。