【问题标题】:Laravel 5.5 form confirmed by passwordLaravel 5.5 表单通过密码确认
【发布时间】:2018-05-20 22:33:12
【问题描述】:

我正在通过我的应用程序中的 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',
        ]);

任何想法我该怎么做?

【问题讨论】:

  • 加密插入密码并查询数据库..?
  • @AndriyKlitsuk crypt 插入密码?
  • @lagbox 从我试图理解的神秘问题来看,他需要检查用户是否输入了正确的密码,所以这是怎么回事?我想密码是在数据库中加密的,所以在检查之前需要加密
  • 密码未加密

标签: php forms laravel validation


【解决方案1】:

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

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

{{ 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',

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 是的,我只是到了这一点,Laravel 验证对我没有帮助:)
    【解决方案3】:

    您可以使用此将字符串与用户存储的密码进行比较

    $pwd = "secret";
    $user = User::find(1);
    Hash::check($pwd, $user->password); //returns a boolean
    

    【讨论】:

    • 感谢它正是我正在寻找的。​​span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2018-10-18
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多