Gate 超级管理员拥有全部权限踩坑点

文档中是这样写的:

Gate 拦截检查

有时,你可能希望将所有能力授予特定用户。所以你可以在所有其他授权检查之前使用 before 方法来定义运行的回调:

Gate::before(function ($user, $ability) {
if ($user->isSuperAdmin()) {
return true;
}
});

如果 before 回调方法返回的是非 null 的结果,则结果将被视为检查结果。

注意这句话 如果 before 回调方法返回的是非 null 的结果,则结果将被视为检查结果。

这句话是重点啊,如果直接定义

Gate::before(function ($user, $ability) {
    return $user->id === 1;
});

这样会导致失败是返回的是false而不是null,会直接导致后续授权验证失效。找了很久错误才发现,怪我没仔细看文档。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!