laravel - Laravel 8:创建和使用新权限的问题
问题描述
我的本地 Windows PC 上有一个 Laravel 8 项目。我通过 zip 文件将项目上传到 Dreamhost 上的共享虚拟主机,并将整个数据库复制到远程主机。(我无法在远程服务器上使用 Composer 和 php artisan 命令)我在我的项目中使用 Spatie 角色和权限。
后来我不得不在我的项目中添加一个新的权限“holiday_vacation”。我在本地系统上使用工匠命令创建了新权限 我相信当创建新权限时,它会在permissions
表中添加一条新记录,并且当用户被授予访问特定权限时,一条记录会添加到model_has_permissions
表中. 我相信在此过程中不会更改其他表。新创建的“holiday_vacation”权限在我的本地系统上运行良好。
但是,在我手动更新远程表(permissions 和 model_has_permissions)后,远程系统无法找到新的权限(holiday_vacation)。控制器中的以下命令显示错误消息“没有holiday_vacation
为 guard命名的权限web
”。
if(auth()->user()->hasPermissionTo('holiday_vacation') )
{
dd("Has access");
}
我绝对确定权限表具有holiday_vacation
权限,因为我将权限和 model_has_permissions 表从本地数据库复制到远程数据库。
谷歌搜索在这个问题上谈论清除权限缓存(例如 php artisan cache:forget spatie.permission.cache 然后 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();
推荐阅读
- css - 如何在 AdminLTE 中将侧边栏移动到仪表板的右侧?
- java - 类treenode中的构造函数treenode不能应用于java中的给定类型?
- vue.js - 输入带有当前日期的日期占位符
- c# - 如何从工具窗口访问当前代码编辑器?
- email - 如何使用 Outlook 的 SMTP 服务器发送电子邮件?
- android - BufferQueueProducer 问题专门针对 Android Q Pixel 3 和 3 XL 设备。模拟器工作正常
- python - Instagram 页面无法通过 Tor 的 urlopen() 加载。可能是什么原因/解决方法?
- r - 具有可变数量参数的递归函数
- python - 用于比较两个数据框并使用真/假创建新列的功能
- ubuntu - SSH 在使用以太网电缆一段时间后无限期挂起;甚至无法断开连接