Laravel 8:创建和使用新权限时出现问题
Laravel 8: Problem creating and using a a new Permission
我在本地 Windows PC 上有一个 Laravel 8 项目。我通过 zip 文件将项目上传到我在 Dreamhost 上的共享虚拟主机,并将整个数据库复制到远程主机。 (我无法在远程服务器上使用 Composer 和 php artisan 命令)我在我的项目中使用 Spatie 角色和权限。
后来我不得不在我的项目中添加一个新权限 'holiday_vacation'。我在我的本地系统上使用 artisan 命令创建了新权限 我相信当创建新权限时,它会在 permissions
table 中添加一条新记录,并且当用户被授予访问特定权限时权限,一条记录被添加到 model_has_permissions
table。我相信在此过程中没有其他 table 发生变化。新创建的 'holiday_vacation' 权限在我的本地系统上工作正常。
然而,在我手动更新远程tables(权限和model_has_permissions)后,远程系统无法找到新的权限(holiday_vacation)。控制器中的以下命令显示错误消息,“没有名为 holiday_vacation
的权限用于保护 web
”。
if(auth()->user()->hasPermissionTo('holiday_vacation') )
{
dd("Has access");
}
我绝对确定权限 table 具有 holiday_vacation
权限,因为我将权限和 model_has_permissions table 从本地数据库复制到远程数据库.
Google 搜索此问题讨论清除权限缓存(例如 php artisan cache:forget spatie.permission.cache then php artisan cache:clear) .不幸的是,我无法在我的共享主机上执行 php artisan 命令。
有人可以提供解决方法吗?
@BABAK ASHRAFI 的评论起到了作用,只是命令需要稍微修改一下。 (参考:https://spatie.be/docs/laravel-permission/v3/advanced-usage/cache)
app()->make(\Spatie\Permission\PermissionRegistrar::class)->forgetCachedPermissions();
我在本地 Windows PC 上有一个 Laravel 8 项目。我通过 zip 文件将项目上传到我在 Dreamhost 上的共享虚拟主机,并将整个数据库复制到远程主机。 (我无法在远程服务器上使用 Composer 和 php artisan 命令)我在我的项目中使用 Spatie 角色和权限。
后来我不得不在我的项目中添加一个新权限 'holiday_vacation'。我在我的本地系统上使用 artisan 命令创建了新权限 我相信当创建新权限时,它会在 permissions
table 中添加一条新记录,并且当用户被授予访问特定权限时权限,一条记录被添加到 model_has_permissions
table。我相信在此过程中没有其他 table 发生变化。新创建的 'holiday_vacation' 权限在我的本地系统上工作正常。
然而,在我手动更新远程tables(权限和model_has_permissions)后,远程系统无法找到新的权限(holiday_vacation)。控制器中的以下命令显示错误消息,“没有名为 holiday_vacation
的权限用于保护 web
”。
if(auth()->user()->hasPermissionTo('holiday_vacation') )
{
dd("Has access");
}
我绝对确定权限 table 具有 holiday_vacation
权限,因为我将权限和 model_has_permissions table 从本地数据库复制到远程数据库.
Google 搜索此问题讨论清除权限缓存(例如 php artisan cache:forget spatie.permission.cache then php artisan cache:clear) .不幸的是,我无法在我的共享主机上执行 php artisan 命令。
有人可以提供解决方法吗?
@BABAK ASHRAFI 的评论起到了作用,只是命令需要稍微修改一下。 (参考:https://spatie.be/docs/laravel-permission/v3/advanced-usage/cache)
app()->make(\Spatie\Permission\PermissionRegistrar::class)->forgetCachedPermissions();