LaravelのデフォルトのHash化を変更する方法

こんにちは!

個人開発をしている南です!

今回はLaravelのデフォルトのHash化を変更する方法を紹介します。

基本的には、LaravelのデフォルトのHash化形式Bcryptを使用した方が良いのですが、外部連携などでどうしても変更する必要が出たりする場合があります。

なので今回の記事では実際に、Hash化方法をBcryptからSha256形式に切り替えていきます。

Hashを変更する方法

まずは、LaravelのHashを取り替えるのに必要なものを紹介します。

LaravelのHashを変更するには、下記3段階を踏んでいきます。

1.HashServiceクラスの準備
2.HashServiceクラスを登録するプロバイダーの準備
3.デフォルトのサービスプロバイダーの入れ替え

HashServiceクラスの準備

今回は、sha256方式のHashに切り替える方法を紹介します。

まずは、「app/Services/Sha256/Sha256HashService.php」という形でファイルを作ります。

空のファイルを作ったら、中身を下記のように記述しましょう。

コードの補足

このコードは3つのパーツからできています。

makeパーツ

makeパーツは下記の部分です。

makeでは、パスワードをHash化するのに使用します。

checkパーツ

checkパーツは下記の部分です。

checkパーツでは、ログインの際にHash化したパスワードを比較し、ログインさせるかどうかの判断で使用します。

needsRehas

needsRehasパーツは下記の部分です。

needsRehasでは、パスワードのHash方式が変更されているかチェックし、変更されている場合はHash方法を変更することができます。

参照URL:Laravel – How do you use Hash::needsRehash()?

info

infoパーツは下記の部分です。

infoでは、hashされた値の情報をなどが必要であれば記載しましょう。

HashServiceクラスを登録するServiceプロバイダーの準備

新しくHashServiceクラスが作れたら、今度はそれをServiceプロバイダーに登録します。

Serviceプロバイダーに登録することで、Laravelで今回使用したHashを使うことができるようになります。

「app/Providers/Sha256HashServiceProvider.php」というファイルを作成し、下記のように記述します。

コードの補足

このコードは2つのパーツからできています。

regsiterパーツ

regsiterパーツは下記の部分です。

regsiterでは、使用するServiceクラスを登録しています。

providesパーツ

providesパーツは下記の部分です。

providesでは、このファイルが読み込まれた時に返すクラスを指定します。

つまり、このファイルが読み込まれると「Sha256HashService::class」が読み込まれます。

デフォルトのサービスプロバイダーの入れ替え

1.HashServiceクラスの準備
2.HashServiceクラスを登録するプロバイダーの準備

上記がそれぞれ準備ができたら、Laravelの「config/app.php」を開きましょう。

開けたら、該当箇所を下記のように変更します。

これで、登録した「Sha256HashServiceProvider」を使うことができます。

反映されない場合

変更したけど、反映されないなどがあれば下記コマンドを実行しましょう。

まとめ

今回は、Hash化をBcryptからSha256形式に変更する方法を紹介しました。

今回紹介した内容があなたのお役に立てれば幸いです。

この記事を書いた人

南 健太郎

1991年生まれ。都内でエンジニアをしています。
このブログでは、個人開発や日々の技術に関する情報などを発信していきます。