【发布时间】:2020-03-20 04:03:10
【问题描述】:
Laravel 中默认的 auth guard 名称是 'web',但我发现这很混乱,因为它的提供者是 'users'。特别是因为对于管理员守卫来说,名称是 admin 而提供者是 admins(我在 Nova 中使用它)。我在 Laravel 6.5.2 上。
所以我想改变这一点。在我的config/auth 我有:
'defaults' => [
'guard' => 'user',
'passwords' => 'users',
],
和
'guards' => [
'user' => [
'driver' => 'session',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
]
],
和
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
在App\Models\User我有
protected $guard = 'user';
在App\Http\Controllers\Auth\LoginController我有
public function __construct()
{
$this->middleware('guest')->except('logout');
$this->middleware('guest:user')->except('logout');
$this->middleware('guest:admin')->except('logout');
}
现在我在登录时收到错误Auth guard [web] is not defined。将其从web 更改为user 是不是一个坏主意?
我发现设置守卫很混乱,因为您可以在以下位置定义:
- 配置/身份验证
- 在模型中 (
protected $guard = 'guard_name';) - 根据 Laravel 文档,在 LoginController、RegisterController 和 ResetPasswordController 中(受保护的
function guard() { return Auth::guard('guard-name');})
在this article 中描述了可以做我想要实现的目标。
【问题讨论】:
-
请尝试清除缓存
php artisan cache:clear。 -
试过了,还有
php artisan config:clear和php artisan view:clear,不幸的是没用。