Laravel 8:创建和使用新权限时出现问题



我在本地Windows PC上有一个Laravel 8项目。我通过zip文件将该项目上传到Dreamhost上的共享网络主机,并将整个数据库复制到远程主机。(我无法在远程服务器上使用Composer和php-artisan命令(我正在使用Spatie Roles&我的项目中的权限。

后来,我不得不在我的项目中添加一个新的权限"holiday_vacation"。我在本地系统上使用artisan命令创建了新权限。我相信,当创建新权限时,它会在permissions表中添加一条新记录,当用户被授予访问特定权限的权限时,一条记录会添加到model_has_permissions表中。我相信,在这一过程中,没有其他表格发生变化。新创建的"holiday_vacation"权限在我的本地系统上运行良好。

但是,在我手动更新远程表(permissions和model_has_permissions(后,远程系统无法找到新的权限(holiday_vacation(。控制器中的下列命令显示错误消息"0";保护web没有名为holiday_vacation的权限">

if(auth()->user()->hasPermissionTo('holiday_vacation') )
{
dd("Has access");
}

当我将permissions和model_has_permissions表从本地数据库复制到远程数据库时,我绝对确信permissions表具有holiday_vacation权限。

谷歌搜索在这个问题上谈到了清除权限缓存(例如,php artisan缓存:忘记spatiale.permission.cache,然后php artisan缓存:清除(。不幸的是,我无法在共享主机上执行php-artisan命令。

有人能提供一个变通办法吗?

@BABAK ASHRAFI的注释成功了,只是命令需要稍微修改一下。(参考:https://spatie.be/docs/laravel-permission/v3/advanced-usage/cache)

app()->make(SpatiePermissionPermissionRegistrar::class)->forgetCachedPermissions();

最新更新