前提・実現したいこと
環境:
Laravel 5.5
PHP 7.2.17
Laravel 5.5 の標準のログイン認証の際のパスワードのを復元できるようにするために保存方法をハッシュ化から暗号化で行いたい。
また暗号化したパスワードで認証を行いたい。
試したこと
Laravel 5.5 の標準のユーザー登録をカスタマイズしてハッシュ化から暗号化に変更してパスワードを保存しました。
\app\Http\Controllers\Auth\RegisterController.php
PHP
1protected function create(array $data) 2{ 3 return User::create([ 4 'name' => $data['name'], 5 'email' => $data['email'], 6 // ハッシュ化から暗号化に変更 7 // 'password' => bcrypt($data['password']), 8 'password' => encrypt($data['password']), 9 ]); 10}
しかし、ログインするためにはパスワードの照合を行わなければなりませんが、
パスワードの照合を行っているのが
\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php
PHP
1public function validateCredentials(UserContract $user, array $credentials) 2{ 3 $plain = $credentials['password']; 4 5 return $this->hasher->check($plain, $user->getAuthPassword()); 6}
のため、/vendor 配下のファイルで行われています。
PHP
1return $this->hasher->check($plain, $user->getAuthPassword());
を
PHP
1return ($plain === decrypt($user->getAuthPassword()));
に編集すればログインできるようになったのですが、/vendor 配下のファイルを編集するのではなく、暗号化したパスワードで照合を行うようにカスタマイズすることは可能でしょうか?
また、可能ならどのようにカスタマイズすればよいでしょうか?
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー