Laravel登录功能失效及old助手异常问题求助
Laravel登录失败与old()函数失效解决方案
一、登录失败排查要点
- 修正认证字段配置:Laravel默认用
email做登录标识,你用user_name的话,需要在User模型里加一行protected $username = 'user_name';;如果密码字段是pass_word而非默认的password,还要在模型里重写密码方法:public function getAuthPassword() { return $this->pass_word; } - 检查密码哈希:注册时必须用
Hash::make($request->pass_word)加密密码再存入数据库,要是直接存明文,登录时Auth::attempt()会验证失败。 - 确认登录逻辑参数:自定义登录逻辑里,
Auth::attempt()的参数要写成['user_name' => $request->user_name, 'password' => $request->pass_word],这里第二个键必须是password,因为Laravel认证时会默认用这个键去匹配哈希值。
二、old()辅助函数失效解决
- 路由必须用web中间件:把登录、注册路由放在
routes/web.php里,api.php里的路由不带session,old()依赖session所以会失效。 - 验证失败后带输入跳转:验证不通过时,必须用
back()->withErrors($validator)->withInput()返回,不能直接返回视图,否则旧输入不会被存入session。 - 表单字段名要匹配:输入框里写
value="{{ old('user_name') }}",确保括号里的字段名和表单提交的参数名完全一致,大小写也不能错。
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

