人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

Laravel の ユーザー認証の ハッシュ方式を任意のものに変更する

● Laravel の ユーザー認証の ハッシュ方式を任意のものに変更する

例) として aes256(キー固定)に変更してみます。

● 1.CustomHasher.php の作成

app/Libs/CustomHash/CustomHasher.php を以下の内容で作成する

<?php
 namespace App\Libs\CustomHash;
 
use Illuminate\Contracts\Hashing\Hasher as HasherContract;
 
class CustomHasher implements HasherContract {

    public function info($hashedValue)
    {
        return $this->driver()->info($hashedValue);
    }
 
    public function make($value, array $options = array()) {
        $key = env('CUSTOM_HASHER_AES256_KEY', false);
	    return openssl_encrypt($value,'aes-256-ecb',$key);
    }

    public function unmake($value, array $options = array()) {
	    $key = env('CUSTOM_HASHER_AES256_KEY', false);
	    return openssl_decrypt($value,'aes-256-ecb',$key);
    }
 
    public function check($value, $hashedValue, array $options = array()) {
        return $this->make($value) === $hashedValue;
    }
 
    public function needsRehash($hashedValue, array $options = array()) {
        return false;
    }
 
}

● 2. CustomHashServiceProvider.php の作成

app/Providers/CustomHashServiceProvider.php を以下の内容で作成する

<?php
namespace App\Providers;
 
use Illuminate\Hashing\HashServiceProvider;
use App\Libs\CustomHash\CustomHasher as CustomHasher;
 
class CustomHashServiceProvider extends HashServiceProvider
{
    public function register()
    {
        $this->app->singleton('hash', function () {
            return new CustomHasher;
        });
    }
}

● 3.config/app.php の変更

config/app.php の変更

    'providers' => [
		・・・・・
        App\Providers\CustomHashServiceProvider::class ,    // 追加
        // Illuminate\Hashing\HashServiceProvider::class,    // コメントアウト
		・・・・・

● 4. .env に追加

CUSTOM_HASHER_AES256_KEY=my_aes256key

● 5. bcrypt で記述しているシーダーがあれば修正

            'password'            => bcrypt('my-pass-word') ,

  ↓

            'password'            => \Illuminate\Support\Facades\Hash::make('my-pass-word') ,
No.1453
03/07 14:35

edit

bcrypt
Hasher
Hashing