如何修改Laravel Jetstream登录逻辑 新增is_admin=1身份校验规则
Laravel Jetstream Livewire 管理员专属登录功能实现方案
步骤1:修改登录表单新增隐藏字段
找到项目中登录视图文件 resources/views/auth/login.blade.php,在Livewire表单节点内插入隐藏输入框:
<input type="hidden" wire:model="is_admin" value="1">
步骤2:修改Livewire登录组件逻辑
找到登录组件文件 app/Http/Livewire/Login.php,按以下要求调整代码:
- 新增公共属性接收前端传的
is_admin参数
// 类顶部属性声明区域新增 public $is_admin;
- 调整身份校验逻辑,在
authenticate方法内新增管理员字段校验:
public function authenticate() { $this->validate(); // 优先校验账号是否为管理员 $user = \App\Models\User::where('email', $this->email)->first(); if ($user && $user->is_admin !== 1) { $this->addError('email', '当前账号无管理员登录权限'); return; } // 常规账号密码校验逻辑 if (! Auth::attempt($this->only('email', 'password'), $this->remember)) { $this->addError('email', trans('auth.failed')); return; } // 原有登录成功后的跳转逻辑保留不变 return redirect()->intended(route('dashboard', absolute: false)); }
如果你不需要区分错误类型,也可以直接把
is_admin条件加入Auth::attempt参数,代码更简洁:if (! Auth::attempt([ 'email' => $this->email, 'password' => $this->password, 'is_admin' => 1 ], $this->remember)) { $this->addError('email', trans('auth.failed')); return; }
内容的提问来源于stack exchange,提问作者Mitesh Kothari
相关产品推荐
相关产品推荐

