Laravel 8 注册表单中是否可以添加「Remember Me」功能?
解决方案
你找不到注册后的认证逻辑是因为RegistersUsers这个Laravel自带的特质封装了注册后的自动登录流程,你不需要修改源码,直接在当前RegisterController中扩展对应逻辑即可,具体修改步骤如下:
步骤1:修改注册页表单
在注册表单中添加「记住我」复选框,字段名设置为remember即可,示例代码:
<div class="form-check"> <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}> <label class="form-check-label" for="remember">记住我</label> </div>
步骤2:修改验证规则
修改validator方法,添加remember字段的可选验证规则:
protected function validator(array $data) { return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'country' => ['required', 'string'], 'password' => ['required', 'string', 'min:8', 'confirmed'], 'remember' => ['nullable', 'boolean'], // 新增这行 ]); }
步骤3:重写注册方法支持记住我
首先在文件顶部引入Request类:
use Illuminate\Http\Request;
然后在RegisterController中添加重写的register方法,将记住我的参数传入登录逻辑:
public function register(Request $request) { $this->validator($request->all())->validate(); $user = $this->create($request->all()); // 登录时传入第二个参数为用户选择的记住我状态 $this->guard()->login($user, $request->boolean('remember')); return $this->registered($request, $user) ?: redirect($this->redirectPath()); }
修改完成后,用户注册时如果勾选「记住我」选项,系统会生成长期有效的登录Cookie,和登录页的「记住我」功能逻辑完全一致,默认会话到期后也不需要重新登录。
内容的提问来源于stack exchange,提问作者James Wilson
相关产品推荐
相关产品推荐

