Laravel注册验证异常:错误凭证未跳转至首页问题求助
问题分析与修复方案
核心问题1:数据库字段赋值拼写错误
你的控制器代码中,给用户模型赋值密码时存在拼写错误:
$user->pasword=$request->password;
这里应该是password(少了一个s),需要和数据库表中的字段名保持一致。这个错误会导致用户数据无法正确存入数据库,$user->save()会返回false触发跳转首页,但这是验证通过后的问题,不是你描述的“凭证错误时”的问题。
核心问题2:验证失败的默认行为与错误提示缺失
Laravel的$request->validate()方法在验证不通过时,会自动重定向回表单页面,并将错误信息存入session,不会执行后续代码逻辑。你看到的“页面仅刷新”其实是验证失败后的默认重定向,但因为视图中没有显示验证错误信息,所以看起来只是刷新。
修复步骤:
- 修正控制器中的拼写错误
public function user_register(Request $request){ $request->validate([ "name"=>"required", "email"=>"required|email|unique:custom__auths", "password"=>"required|min:5|max:12" ]); $user = new Custom_Auth(); $user->name=$request->name; $user->email=$request->email; $user->password=$request->password; // 修正拼写错误 if($user->save()){ return back()->with('success','you have registered successfully'); } else{ return redirect('/'); } }
(注:去掉了不必要的$res变量,直接用$user->save()的返回值判断)
- 在视图中添加验证错误提示
在注册表单顶部添加错误信息展示代码,让用户能看到具体的验证失败原因:
@extends('Layouts.Master') @section('content') <link rel="stylesheet" href="{{asset('/Assets/CSS/Auth.css')}}"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <div class="container"> {{-- 显示验证错误 --}} @if ($errors->any()) <div style="color: red; margin-bottom: 15px;"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif {{-- 显示成功消息 --}} @if(session('success')) <div style="color: green; margin-bottom: 15px;"> {{ session('success') }} </div> @endif <input type="checkbox" id="flip"> {{-- 原视图其余内容保持不变 --}} @endsection
修复后,当验证失败时,页面会返回表单并显示具体错误;注册成功时显示成功提示;如果因数据库问题导致保存失败,才会跳转首页。
内容的提问来源于stack exchange,提问作者user18920992
相关产品推荐
相关产品推荐

