php - 更改 Laravel 中的默认身份验证保护名称
问题描述
Laravel 中默认的身份验证保护名称是“web”,但我发现这很混乱,因为它的提供者是“用户”。特别是因为对于管理员守卫来说,名称是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 文档(受保护
function guard() { return Auth::guard('guard-name');}
) ,在 LoginController、RegisterController 和 ResetPasswordController 中
在这篇文章中,它描述了可以做我想要实现的目标。
解决方案
我认为发生这种情况是因为在默认app/Providers/Route service provider.php
类中,有这种方法可以将您的roites/web.php
文件注册到web
中间件。您还应该在此处更改中间件名称:
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
推荐阅读
- html - 网页在 chrome 的检查中响应,但在真实手机上失败
- reactjs - 将常量传递给动作,并使其可发送到后端
- amazon-web-services - Lambda 函数工作,但不能与 API 网关一起工作
- ios - 为什么有响应与无响应的 MTU 不同?
- python - 从重复选择中构造元组
- python - 在 numpy 中加入 ndarray 中的所有数组
- c# - C# LibVLC,前 2 秒大多为灰色帧。解码错误?
- sql - 为每个给定父 ID 自动增加子订单项
- swiftui-navigationlink - onReceive(self.timer) 在 NavigationView 中不起作用
- sql - SQL - LEAD() 函数