は私が正しく、その後、私は新しいパスワードでログインすることができ、私はnew_password
フィールドを記入した場合、それがハッシュされ、データベースに送信されます、現時点ではパスワードルート、ビューおよび方法[email protected]
中と[email protected]
Laravel 5で現在のパスワード、新しいパスワード、新しいパスワードの確認を確認するにはどうすればよいですか?
を作成しました。
しかし、new_password
とnew_password_confirm
が同じであることを確認し、ユーザーの現在のパスワードも検証できるようにする必要があります。
どうすればいいですか?
EDIT:私はこのメソッドに$this->validate
を追加しましたが、今では単純なパスワードを使用しているので一致してもエラーThe password confirmation confirmation does not match.
が続きます。また、私はvalidator
が私のためにそれをしないので、現在のパスワードと手動で照合する必要があると思います。
public function getProfilePassword(Request $request) {
return view('profile/password', ['user' => Auth::user()]);
}
public function postProfilePassword(Request $request) {
$user = Auth::user();
$this->validate($request, [
'old_password' => 'required',
'password' => 'required|min:4',
'password_confirmation' => 'required|confirmed'
]);
$user->password = Hash::make(Input::get('new_password'));
$user->save();
}
そしてこれは、ユーザーが入力した古いパスワードが正しいかどうかを確認することができますHash::check()
機能がありますビュー
<form action="{{ route('profile/updatepassword') }}" method="post" enctype="multipart/form-data">
<div class="form-group">
<label for="name">Current Password</label>
<input type="password" name="old_password" class="form-control" id="old_password">
</div>
<div class="form-group">
<label for="name">Password</label>
<input type="password" name="password" class="form-control" id="password">
</div>
<div class="form-group">
<label for="name">New Password</label>
<input type="password" name="password_confirmation" class="form-control" id="password_confirmation">
</div>
<button type="submit" class="btn btn-primary">Change Password</button>
<input type="hidden" value="{{ Session::token() }}" name="_token">
</form>
は、これらの便利なヒントをいただき、ありがとうございます。私は 'same:new_password'の代わりに' confirmation'を使っていました。ちょうどそれを変更して動作させました。そして、 'Hash :: check()'を使って現在のパスワードを検証します。 – Halnex
助けてくれてうれしいです:) – Sid
確認フィールドで使うもう1つの良いトリック: 'confirmed'検証ルール<[link](https://laravel.com/docs/5.4/validation#rule-confirmed)> 実際のルールは、次のように1行になります。 ''new_password' => 'required | confirmed''。確認フィールド名は 'new_password_confirmation'でなければなりません。 – Corner