skillup

技術ブログ

PHP

Laravelの認証(独自テーブル仕様)

投稿日:2018年2月11日 更新日:

Laravelで独自の認証をしたいときに少々大変だったのでメモなどを。

*ディフォルトのテーブルはuserで認証項目もemailとpasswordと決まっています。

いじるところが色々ありまして、列挙すると以下のような感じでしょうか。

  1. 認証用のテーブルのモデルを作成
  2. 認証テーブルを読み込むようconfig/auth.phpを修正
  3. コントローラー内での認証処理
  4. ルーティングで呼び出しを設定

まずは「認証用のテーブルのモデルを作成」モデルの登録から。

ディフォルトだとUserというモデル(実際のテーブル名はusers)となっていますので、これをAdminにしたいとします。

と言ってもただのAdminモデルを使っても認証テーブルとしては機能せず、下記のように認証機能が備わっているモデルを継承する必要があります。

最小構成のAdmin.php。パスはApp/Model/Admin.phpです。

よく見るとUserにもこれがついていますね・・・

Laravel 5.3で認証関連機能のテーブル名を変更する方法

ちなみにfillableというのは更新系の処理で予期せぬ値が登録されることを防ぐための仕組みのようです。

【Laravel:Eloquentクラス】fillableとguardedの指定はどちらかだけでいい

次に「認証テーブルを読み込むようconfig/auth.phpを修正」のステップです。このモデルを読むようにconfig/auth.phpで設定変更をする必要があります。apiの記述をわざと抜いてます。

実際に「コントローラー内での認証処理」は下記のようになります。

app/Http/Controllers/Auth/LoginController.php

設定をしたら「ルーティングで呼び出しを設定」をします。

ちなみにURL自体はprefixにauthが必須と言うわけではないのでを通常のURL内にmiddleware=>authだけを定義して認証状態をコントールできます。

また認証ページ(/auth/home)に認証なしにアクセスしようとすると飛ばすページを定義するには下記のように設定をします。

./app/Exceptions/Handler.php

この場合http://samle.com/auth/homeにアクセスしようとすると、このアクションはauthで認証が聞いているので、http://sample.com/auth/loginに飛ばされるようになります。

*まだ調査中ですが、非ログイン時にリダイレクトされるのは./app/HttpControllers/Auth内の他のファイル(例えばResetPasswordController.php)のredirectToの値で決まるようです。

ちなみに標準だとパスワードのハッシュ化にはbcryptというロジックで実装されます。

データベースに直でデータを入れたいときはbcrypt(‘生パスワード’)と加工してPHPから突っ込んであげれば大丈夫です。

照合に関して

また入力した値がパスワードと一致するかは通常はAuthライブラリをそのまま使うので直接見ることはないかもしれませんが、何らかの用途で使う必要がある時は通常は下記のようにします。

Laravel 5 現在のパスワードを入力チェックする

 

-PHP
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

jenkinsでのPHPのCIに関して

PHPでのjenkinsに関して。 PHPでのjenkinsといっても基本Javaなどと変わらないと思います。 何らかのトリガーでjenkinsのjobをビルド(一連のタスク)させる ビルドの内容はソ …

no image

cakeでの多対多を含んだ検索に関して

cakeを使って多対多を実現する方法はこのエントリーで紹介しました。 が、多対多を含む検索をする場合は一筋縄ではいかず結構面倒くさいです。 通常cakeで検索を行う場合、 ‘conditi …

no image

エラーハンドリング

エラーが起きた時にPHPだと画面に出ますが(出ない場合は画面が白くなります)、これを検知し、ログに吐いたり任意の処理をできるのがエラーハンドリングです。 フレームワークなどにはほぼこの仕組みが内在して …

no image

クラスメソッドとインスタンスメソッド

以前staticメソッドを定義したときに、記法がインスタンスメソッドの呼び方でも呼べてしまうことがあったので、これを機にインスタンス・クラス×変数・メソッドちょっと調べてみました。 言葉で書くよりコー …

no image

CakePHP3 Csvプラグイン

cakePHPでのCSVダウンロードプラグインを実装 Contents1 インストール2 プログラム3 注意点4 参考 インストール composer.jsonに下記のように書いてcomposer u …