我尝试使用存储在我的数据库中的哈希密码来检查表单输入。但由于某种原因,检查运行用户名而不是密码。现在,我的问题是,我没有以正确的方式使用这些命令,还是我忘记了什么?这是我的代码:
在route.php中
Route::get('/{user}/confirm', 'PagesController@confirm');
在PagesController.php中
public function check(User $user)
{
return view('users.check', compact('user'));
}
public function confirm(User $user, Request $request)
{
echo "Input = " . $request->input('check');
echo "<br>";
echo "Password in DB = " . $user->password;
echo "<br>";
echo "Username = " . $user->username;
if (Hash::check($request->input('check'), $user->password))
{
echo "<br>Correct Password.";
} else {
echo "<br>Incorrect Password.";
}
最后,在check.blade.php
中@extends("master")
@section("content")
<h2>Check User:</h2>
<h3 class="text-success">{{ $user->username }}</h3>
{!! Form::model($user, ['url' => '/' . $user->slug . '/confirm', 'method' => 'GET']) !!}
<div class="form-group">
<div class="row">
<div class="col-xs-4">
{!! Form::label('check', 'Password') !!}
{!! Form::text('check', null, ['class' => 'form-control']) !!}
</div>
</div>
</div>
<div class="form-group">
{!! Form::submit('Check Password', ['class' => 'btn btn-primary']) !!}
<a href="/" class="btn btn-primary">Cancel</a>
</div>
{!! Form::close() !!}
@stop
现在,在我的数据库中,我有一个名为test的用户,密码为1234.如果我把&#34; 1234&#34;在检查密码字段中,我得到&#34;不正确的密码&#34;。但是,如果我把&#34; test&#34;,它返回&#34;更正密码&#34;。
我对编程很新。可能值得一提。
答案 0 :(得分:1)
似乎您创建的用户密码与用户名相同。
您应该查看创建用户的方法,它应该是:
$user = new User();
$user->name = $request->input('name');
$user->password = Hash::make($request->input('password'));
$user->save();
我认为现在您创建用户的过程如下所示:
$user = new User();
$user->name = $request->input('name');
$user->password = Hash::make($request->input('name'));
$user->save();
所以你创建的不是用于密码字段而是用于名称,以及为什么Hash::check
在传递用户名时为真,在传递密码时为假。