[Laravel] Auth 機能とMiddlewareの設定(2)

今回はLaravel標準の認証機能とMiddlewareによる認証チェック機能についての情報を
シェアしたいと思います。
本記事は前回の「[Laravel] Auth 機能とMiddlewareの設定(1)」の続きです。

ログインユーザーID/PWの参照先の変更

\Auth::guard(‘web’) の部分でログインユーザーのID/PWの参照先を設定するのですが
この部分は
\config\auth.php
で設定できます。

guard(‘web’)というのは以下の設定情報を参照するということを示しています。

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
],

上記の ’provider’ => ‘users’, は同設定ファイル内の以下の情報を参照するということを示しています。

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

よってこの部分をカスタマイズすることによって、任意のテーブル/カラムを
ログインID/PWの参照先にカスタマイズすることが可能です。

試しにmembersテーブルの作成をおこない、このテーブルを使用して認証をおこないます。

CREATE TABLE `members` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `uid` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `pw` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
);

membersテーブルに動作確認用のダミーレコードを登録します。

membersテーブル用に
\config\auth.php
で設定を作成します。
web2を新規追加しました。

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'web2' => [
        'driver' => 'session',
        'provider' => 'members',
    ],
],

membersテーブル用のprovidersを追加します。

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

    'members' => [
        'driver' => 'eloquent',
        'model' => App\Models\Member::class,
    ],

],

この状態でテストします。

    $credentials = ['uid'=>'test3', 'password'=>'test2']; //emailをuidに変更
    dd(\Auth::guard('web2')->attempt($credentials));


実行結果:false

正しいID/PWの筈ですがfalseになりました。
今回作成したテーブルではpassword用のカラム名が「password」ではなく
「pw」なのでその分の調整をmembersテーブル用のModelでおこなう必要があります。

次回はModelの調整方法について説明いたします。


木曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム