所以我创建了一个 Laravel 自定义身份验证,我正处于创建登录表单的阶段,但它突然不断要求填写密码,我已经完成了,但没有任何反应。
这是我的登录表单:
<form action="{{ route('auth.check') }}" class="log-form" method="post" value="{{ old('email') }}">
@if(Session::get('fail'))
<div class="alert-danger">
{{ Session::get('fail') }}
</div>
@endif
@csrf
<div class="name">
<label for="fname">Email Address</label><br>
<input type="text" id="email" name="email" value=""><br>
</div>
<span class="text-danger">
@error('email') {{ $message }} @enderror
</span>
<div class="name">
<label for="fname">Password</label><br>
<input type="password" id="pass" name="fname" value=""><br>
</div>
<span class="text-danger">
@error('password') {{ $message }} @enderror
</span>
<br><br>
<input type="submit" value="LOG IN" class="log-sub">
</form>
这是我的控制器:
function check(Request $request){
$request->validate([
'email'=>'required|email',
'password'=>'required|min:6|max:16',
]);
$userInfo = Admin::where('email', '=', $request->email)->first();
if($userInfo){
return back()->with('fail', 'We do not recognize your email address');
}
else {
if(Hash::check($request->password, $userInfo->passsword)){
$request->session()->put('LoggedUser', $userInfo->id);
return redirect('admin/dashboard');
}
else {
return back()->with('fail', 'Incorrect password');
}
}
}
答案 0 :(得分:1)
问题仅在于您的输入名称。在验证中,您希望有一个名为 password 的输入,但是密码输入被命名为 fname,因此验证将始终失败,因为密码字段是必需的。 所以而不是:
<input type="password" id="pass" name="fname" value="">
使用:
<input type="password" id="pass" name="password" value="">