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

mb_convert_encodingに関して(文字コードの自動検出やその周辺)

以前Perlでもやりましたが、文字コードの自動検出に関して。 ちなみにcp932=SJIS-WINです。 参考リンク Perlでの動的改行コード読み込みに関して+cp932ネタ PHPの場合、mb_d …

no image

PHPでのデバッグ

基本的なことですが、PHPのdebugについておさらいを。 Contents1 一般的なデバッグツール1.1 var_dump1.2 xdebug1.3 フレームワークのdebugツール1.4 dd1 …

no image

phing

今までphpunit,phpmd,phpcodesniffer,phpdocumentなどのツールをいろいろと試してきますが、個別に動かしていると大変面倒ですので、これを一気に行えるライブラリがありま …

no image

cakePHP Tips その2

またまたCakePHPのネタです。 タイトルから内容がわからなくてすいません。 五月雨式に行きます。 Contents1 コントローラーごとのベースになるテンプレートの変更2 linkタグでのHTML …

no image

PHPの開発事情 (PHPBrew/ビルトインサーバー/Xdebug/PHPUnit/Composer)

私自身、プログラミングは好きなんですがあまり現代の流行の技術に興味がありません(汗) IT業界はドッグイヤーならぬ、マウスイヤーとも呼ばれているようで、常に最新技術の動向には目を光らせていく必要があり …