2017-05-16 5 views
1

私は、ユーザーテーブルの電子メールやその他の詳細を編集するために使用しているフォームを持っています。その他の詳細は、私がユーザーテーブルに追加した列です。laravelの他のフォームフィールドと一緒にパスワードを編集する

私はパスワードを編集できるようにしたい、私はいくつかのオプションがあります。編集ビューで

  1. 、パスワードを残して、空白のパスワードフィールドを確認(DBからの値は、パスワードフィールドに表示されていない)と、ユーザは新しいパスワードを入力することができます。私は古いパスワード機能を入力していないので、管理者だけがユーザーを編集する能力を持っています。

  2. bcrypt暗号化パスワードをプレーンテキストに復号化し、パスワードフィールドに生のテキストパスワードを入力し、フォームフィールドをパスワードではなくテキストに変更します。

  3. パスワードフィールドに、ユーザーパスワードのパスワードフィールドに格納されているbcrypt文字列を入力します。

laravel?でユーザーパスワードを解読することは可能でしょうか。

+2

だけでパスワードを更新するからあなたを停止しますか? '$ user-> password = bcrypt($ newPassword); $ user-> save() 'パスワードを解読するか正当な理由で保存するのは正当な理由ではありません。 –

+0

他のフォームフィールドと一緒に編集するときのユーザへのプレゼンテーション。編集フォームでは、パスワードフィールドの中には何が入りますか?ブラックドット(文字)のパスワード形式、またはプレーンテキストのパスワード、またはユーザーのテーブルからの長いbcryptハッシュ –

+0

'bcrypt()'は異なる時に異なるハッシュを生成します。ハッシュされたパスワードは 'Hash :: check()'を使って平文でしかチェックできません。 –

答えて

1

パスワードを更新するだけで何が止まるのですか?

$user->password = bcrypt($newPassword); 
$user->save() 

パスワードを解読したり、平文で保管しておく理由はありません。実際、bcryptはあなたの暗号化を解読できないようにします。

あなたの質問に直接答えるには、オプション1はオプションです。

編集:2番目の質問

そのユーザに提示する他のフォーム フィールドと一緒に編集します。編集フォームでは、パスワードフィールドの中には何が入りますか? パスワード形式は黒色のドット(文字)またはパスワード(平文)または 長いbcryptハッシュをユーザーのテーブルから直接インポートしますか?

あなたはそこに何でも入れてもいいですか?それを空白のままにすることも、星や点などを表示することもできます。重要なことは、バックエンドの要求でどのように処理するかです。

は、空に何がフィールドに置かれた場合は、単にバックエンドで確認することができ、そのようにそれを残す:

if($request->has('new_password') { 
    // update password 
} 
関連する問題