isAdministrator()) { return true; } $userPermissions = $this->getCachePermissions(); //获取缓存权限 if (!$userPermissions) {//未获取到则刷新 $userPermissions = $this->refreshCachePermissions(); } //判断是否有权限 if (in_array($slug, $userPermissions)) { return true; } return false; } /** * 更新缓存权限:重新获取,并存入缓存 * * @return array|null */ public function refreshCachePermissions(): ?array { //获取角色权限 $permissions = []; foreach ($this->roles()->get() as $role) { if ($role->name !== 'Administrator') { foreach ($role->permissions as $permission) { $permissions[] = $permission->slug; } } } //缓存权限 session(['user_permissions' => $permissions]); return $permissions; } /** * 获取缓存权限 * * @return array|null */ public function getCachePermissions(): ?array { return session('user_permissions'); } }