阅读(1345)
赞(12)
Laravel 8 添加自定义的看守器
2021-06-29 15:28:32 更新
你可以使用 Auth
facade 的 extend
方法来定义自己的身份验证看守器。你应该在 服务提供器 中调用 extend
方法。由于 Laravel 已经附带了 AuthServiceProvider
,我们可以将代码放在该提供器中:
<?php
namespace AppProviders;
use AppServicesAuthJwtGuard;
use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
use IlluminateSupportFacadesAuth;
class AuthServiceProvider extends ServiceProvider
{
/**
* 注册任何应用程序验证/授权服务
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Auth::extend('jwt', function ($app, $name, array $config) {
// 返回一个 IlluminateContractsAuthGuard 实例...
return new JwtGuard(Auth::createUserProvider($config['provider']));
});
}
}
正如你在上面的示例中所看到的,传递给 extend
方法的回调应该返回一个实现 IlluminateContractsAuthGuard
接口的实例。这个接口包含了一些你需要在自定义的看守器中实现的方法。当你的自定义看守器定义完成之后,你可以在 auth.php
配置文件的 guards
配置中使用这个看守器:
'guards' => [
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],