[Laravel] Auth ログインパスワードを平文でデータベースに変更する

ITLaravel, PHP

こんにちは、ハラダ(@nobuhiro_harada)です。

Laravel Auth ログインパスワードを平文でデータベースにする手順です。

※移行やお客様要望などやむを得ない場合でもやらない方がいいです。

[検証環境]
PHP 7.2.4
MySQL 5.7.22
Laravel 5.5.40

Controller の修正

ユーザー登録をする際に、パスワードをハッシュ化してるメソッド bcrypt を使用しているのですが、それを外します。
これでデータベースには入力したパスワードが平文、すなわちそのまま保存されます。

app/Http/Controllers/Auth/RegisterController.php (60行目付近)

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => $data['password'],
    ]);
}

Provider の修正

ログインする際、入力されたパスワードを validateCredentials メソッドでハッシュ化して、データベースに保存されているパスワードとチェックしているのですが、そこを平文のままチェックします。

vendor/laravel/framework/src/Illuminate/Auth/EloquentUserProvider.php (130行目付近)

public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];

    return ($plain === $user->getAuthPassword());
}

以上でパスワードを平文で保存し、ログインも行えます、、、が、データベースにパスワードをそのまま保存するとどうなるか、よくよくご検討ください。

ひとこと

フレームワークの中の実装を読むのは勉強になりますね。

スポンサーリンク

Posted by nobuhiro harada