ユーザ用ツール

サイト用ツール


プログラム言語:php:laravel:認証:laravel7でマルチ認証

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
プログラム言語:php:laravel:認証:laravel7でマルチ認証 [2021/03/03 11:19]
humolife [その他書き換え]
プログラム言語:php:laravel:認証:laravel7でマルチ認証 [2021/12/16 18:27] (現在)
humolife [パッケージのインストール]
行 8: 行 8:
 php artisan ui vue --auth php artisan ui vue --auth
  
 +# vue.js を使わない場合は、以下の手順は不要
 # NodeJS がない場合はインストール # NodeJS がない場合はインストール
 curl -sL https://rpm.nodesource.com/setup_14.x | bash - curl -sL https://rpm.nodesource.com/setup_14.x | bash -
行 34: 行 35:
 # マイグレーションの実行 # マイグレーションの実行
 php artisan migrate php artisan migrate
 +</code>
 +
 +===== モデル =====
 +app 直下にある User.php を app\Models の中に 移動。
 +<code:php|app\Models\User.php>
 +// ディレクトリを移動したので、namespace を書き換え
 +namespace App;
 + ↓
 +namespace App\Models;
 +</code>
 +<code:php|app\Models\Admin.php>
 +// app\Models\User.php の内容をコピペし、クラス名を書き換える
 +class User extends Authenticatable
 + ↓
 +class Admin extends Authenticatable
 +</code>
 +モデルファイルのパスが変わったので、関係するファイルも書き換え。
 +<code:php|app\Http\Controllers\Auth\RegisterController.php>
 +use App\User;
 + ↓
 +use App\Models\User;
 +</code>
 +<code:php|config\auth.php>
 +'model' => App\User::class,
 + ↓
 +'model' => App\Models\User::class,
 </code> </code>
  
行 44: 行 71:
 </code> </code>
 <code:php|database\seeds\UsersTableSeeder.php> <code:php|database\seeds\UsersTableSeeder.php>
 +// 追加
 +use App\Models\User;
 +
     public function run()     public function run()
     {     {
-        // 追加 +        // 本番環境以外でのみアカウントを追加 
-        DB::table('users')->insert([ +        if (config('app.env') !== 'production') { 
-            'name'              => 'user', +            $user = User::where('email', 'user@example.com')->first(); 
-            'email            ='user@example.com', +            if (is_null($user)) { 
-            'password         => Hash::make('user'), +                $user new User(); 
-            'remember_token'    =Str::random(10), +                $user->name = 'user'; 
-        ]);+                $user->email = 'user@example.com'; 
 +                $user->password = bcrypt('user'); 
 +                $user->save()
 +            } 
 +        }
     }     }
 </code> </code>
 <code:php|database\seeds\AdminsTableSeeder.php> <code:php|database\seeds\AdminsTableSeeder.php>
 +// 追加
 +use App\Models\Admin;
 +
     public function run()     public function run()
     {     {
-        // 追加 +        // 本番環境以外でのみアカウントを追加 
-        DB::table('admins')->insert([ +        if (config('app.env') !== 'production') { 
-            'name'              => 'admin', +            $admin = Admin::where('email', 'admin@example.com')->first(); 
-            'email            ='admin@example.com', +            if (is_null($admin)) { 
-            'password         => Hash::make('admin'), +                $admin new Admin(); 
-            'remember_token'    =Str::random(10), +                $admin->name = 'admin'; 
-        ]);+                $admin->email = 'admin@example.com'; 
 +                $admin->password = bcrypt('admin'); 
 +                $admin->save()
 +            } 
 +        }
     }     }
 </code> </code>
行 85: 行 126:
 </code> </code>
  
-===== モデル ===== 
-app 直下にある User.php を app\Models の中に 移動。 
-<code:php|app\Models\User.php> 
-// ディレクトリを移動したので、namespace を書き換え 
-namespace App; 
- ↓ 
-namespace App\Models; 
-</code> 
-<code:php|app\Models\Admin.php> 
-// app\Models\User.php の内容をコピペし、クラス名を書き換える 
-class User extends Authenticatable 
- ↓ 
-class Admin extends Authenticatable 
-</code> 
-モデルファイルのパスが変わったので、関係するファイルも書き換え。 
-<code:php|app\Http\Controllers\Auth\RegisterController.php> 
-use App\User; 
- ↓ 
-use App\Models\User; 
-</code> 
-<code:php|config\auth.php> 
-'model' => App\User::class, 
- ↓ 
-'model' => App\Models\User::class, 
-</code> 
 ===== コンフィグ ===== ===== コンフィグ =====
 認証の設定ファイルをマルチ認証対応に書き換える。 認証の設定ファイルをマルチ認証対応に書き換える。
行 232: 行 248:
   * user → admin   * user → admin
 ※ AuthenticatesUsers を AuthenticatesAdmins に置換しないように注意 ※ AuthenticatesUsers を AuthenticatesAdmins に置換しないように注意
 +
 +==== ログイン後のリダイレクト先を Admin 用に書き換える ====
 +<code:php|app\Http\Controllers\Admin\Auth\LoginController.php>
 +    protected $redirectTo = RouteServiceProvider::ADMIN_HOME;
 +</code>
 ===== ルーティング ===== ===== ルーティング =====
 <code:php|routes\web.php> <code:php|routes\web.php>
行 293: 行 314:
         }         }
         return $next($request);         return $next($request);
 +    }
 +</code>
 +<code:php|app\Exceptions\Handler.php>
 +// 追加
 +use Illuminate\Session\TokenMismatchException;
 +
 +    public function render($request, Throwable $exception)
 +    {
 +        // 追加
 +        // 419 csrf トークン切れで戻る
 +        if ($exception instanceof TokenMismatchException) {
 +            return back()->withErrors(['time_out' => 'セッションがタイムアウトしました']);
 +        }
 +
 +        return parent::render($request, $exception);
     }     }
 </code> </code>
行 309: 行 345:
 </code> </code>
 app_user.blade.php をコピーして app_admin.blade.php を作成。\\ app_user.blade.php をコピーして app_admin.blade.php を作成。\\
-リンク先を route('admin.login') などに変更。+リンク先を route('admin.login') など admin 用に変更。
  
 resources\views 直下に user ディレクトリ作成し、auth ディレクトリと home.blade.php を移動。\\ resources\views 直下に user ディレクトリ作成し、auth ディレクトリと home.blade.php を移動。\\
行 330: 行 366:
 admin ディレクトリ内の各ファイルについて、以下の置換を行う。 admin ディレクトリ内の各ファイルについて、以下の置換を行う。
   * user → admin   * user → admin
 +
 +一通り作業が完了したので、user、admin それぞれの URL にアクセスしてログイン画面が表示されることを確認。\\
 +https://example.com/user/home\\
 +https://example.com/admin/home
 +
プログラム言語/php/laravel/認証/laravel7でマルチ認証.1614737949.txt.gz · 最終更新: 2021/03/03 11:19 by humolife