skillup

技術ブログ

PHP

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

投稿日:

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

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

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

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

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

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

-PHP
-

執筆者:


comment

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

関連記事

no image

PHPのPDF出力に関するエラー

PHPからFPDFなどを使ってPDFを出力するプログラムを書いたんですが、下記のエラーでかなり悩まされました。 FPDF error: Some data has already been outpu …

no image

cakeでのトランザクション、コミット、ロールバック

cakePHP(2.X系)でのトランザクション、コミット、ロールバックについて。 cakePHPでトランザクションを書ける場合、Model内に [crayon-5a91a059b3db22347348 …

no image

cakePHPでの直SQL

今回はCakePHPにて直のSQLを書く方法を。 cakePHPにて大概の処理はもともと備わっているコマンドでなんとかなりますが、まれに直SQLを書いたほうがらくなこともあります。 書き方その1 [c …

no image

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

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

no image

携帯サイト取得手法

PHPでスクレイピングの仕事をよくやるんですが、携帯サイトを取得してほしいという要望があり、少し調査をすることに。 携帯サイトといってもドメイン以下のディレクトリで/で区切ってsample.domai …