Laravel 5.5表格由密码确认

时间:2017-12-06 22:29:15

标签: php forms laravel validation

我在我的应用程序中通过LaravelCollective表单制作表单。 我有电子邮件更改表单与字段: 新邮件 确认邮件 密码

我需要在数据库中使用用户密码验证此表单上的用户密码。我可以通过验证吗?

我的表格:

{{ Form::model($user, ['route' => ['profile.email.update']]) }}
<div class="form-group row">
    <div class="col-md-12">
        <h2>Edytuj email</h2>
        <div class="form-group">
            <label for="edit-page-email">Nowy adres email</label>

            {{Form::text('email',null,['class' => 'form-control', 'id'=>'edit-page-email'])}}
        </div>
        <div class="form-group">
            <label for="edit-page-repemail">Nowy adres email (powtórz)</label>
            {{Form::text('email_confirmation',null,['class' => 'form-control', 'id'=>'edit-page-email'])}}
        </div>
        <div class="form-group">
            <label for="edit-page-pass">Twoje hasło</label>
                {{Form::password('password',['class' => 'form-control', 'id'=>'edit-page-npass'])}}
        </div>
        <div class="col-md-12 text-center">
                {{Form::submit('Zapisz zmiany',['class' => 'btn btn-primary btm-sm']) }}
            <a href="#" class="btn btn-link btn-sm font-red" title="Anuluj">Anuluj</a>
        </div>
    </div>
</div>
{{Form::close()}}

验证是:

 $request->validate([
            'email' => 'required|confirmed',
            'email_confirmation' => 'required',
            'password' => 'required|confirmed',
        ]);

任何想法我该怎么做?

3 个答案:

答案 0 :(得分:0)

不确定您何时说我需要在此表单上使用用户密码验证数据库中的用户密码

但是,密码和密码确认验证应如下所示

{{ Form::password('password',['class'=> 'form-control','placeholder'=>'Enter your Password']) }}
{{ Form::password('password_confirmation', ['class' => 'form-control','placeholder'=>'Re-enter your Password']) }}

现在验证规则应为

'password'   => 'required|confirmed',

答案 1 :(得分:0)

不,你不能用Laravel的内置验证规则来做到这一点。此外,您可能已经使用bycrypt方法知道Laravel存储密码。这不仅仅是一个普通的字符串比较操作。

因此,您需要编写自己的自定义验证来检查密码,或者如果不匹配而不是验证,您只需检查密码并返回错误。

注意:确认的验证规则是检查一个密码是否与另一个密码匹配。这基本上用于匹配单个形式的两个密码表单。不要使用db中的电子邮件检查关联的哈希密码。

答案 2 :(得分:0)

您可以使用此

将字符串与用户存储的密码进行比较
$pwd = "secret";
$user = User::find(1);
Hash::check($pwd, $user->password); //returns a boolean