簡體   English   中英

Laravel 5.5表單已通過密碼確認

[英]Laravel 5.5 form confirmed by password

我通過我的應用程序中的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',
        ]);

任何想法我該怎么做?

不知道何時您說我需要使用數據庫中的用戶密碼來驗證此表單上的用戶密碼

但是,密碼和密碼確認驗證應如下所示

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

不,您不能使用Laravel的內置驗證規則來執行此操作。 另外,您可能已經知道Laravel使用bycrypt方法存儲密碼。 這也不只是一個簡單的字符串比較操作。

因此,您需要編寫自己的自定義驗證來檢查密碼,或者您可以只檢查密碼並返回錯誤(如果不匹配)而不是驗證。

注意:確認的確認規則是檢查一個密碼與另一個密碼是否匹配。 這基本上是用來匹配單個形式的兩個密碼形式。 不檢查與數據庫中的電子郵件關聯的哈希密碼。

您可以使用此方法將字符串與用戶存儲的密碼進行比較

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM