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の値で決まるようです。

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

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

-PHP
-

執筆者:


comment

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

関連記事

no image

ob_startを使ったバッファリング出力

先日var_dumpの結果をログに出力したいときに検索すると下記のようなコードを書けばよいということがわかりました。

ob_start …

no image

guzzle

サイトへのログイン認証などHTTPアクセスを行うライブラリではHTTP2_requestが有名かと思いますが、すでに開発がとまっていることもあり、最近はguzzleというライブラリが使われているようで …

no image

CakePHPでの数字カンマ区切り&PHP&MySQL曜日の出力

今回は主に時間やお金の表示など、出力に関するネタです。 Contents1 Cakeでのカンマ区切り1.1 単純なカンマ区切り 例1,0001.2 \をつけるケース 例 \1,0001.3 円をつける …

no image

PHPで配列の同一性(集合のチェック)

AとBという配列があり、A⊂B つまりは集合のような関係を確かめたいときに下記のようなメソッドを使います。  

no image

wordpressでのnginx設定

ここ1年、apacheではなく、nginxでサービスを作ることが多いため、設定にだいぶ慣れてきました。 今回はwordpressの設定です。 バーチャルホストでsample.comとアクセスをするとw …