Laravel 8 策略自动发现
不需要手动注册模型策略,只要模型和策略遵循标准的 Laravel 命名约定,Laravel 就可以自动发现策略。具体来说,策略必须位于包含模型的目录下的 Policies
目录中。例如,模型可以放在 app
目录中,而策略可以放在 app/Policies
目录中。此外,策略名称必须与模型名称匹配,并具有 Policy
后缀。因此,一个 User
模型将对应于一个 UserPolicy
类。
如果希望提供自己的策略发现逻辑,可以使用 Gate::guessPolicyNamesUsing
方法注册自定义回调。通常,这个方法应该从应用程序的 AuthServiceProvider
的 boot
方法中调用:
use Illuminate\Support\Facades\Gate;
Gate::guessPolicyNamesUsing(function ($modelClass) {
// return policy class name...
});
注意:在
AuthServiceProvider
中显式映射的任何策略都将优先于任何潜在的自动发现策略。