文件中是這樣寫的:
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 協議》,轉載必須註明作者和本文連結