ホームページ バックエンド開発 PHPチュートリアル Laravel 5.6で複数の認証を設定する方法

Laravel 5.6で複数の認証を設定する方法

Jan 21, 2019 am 09:24 AM

この記事では、Laravel 5.6 の複数認証について説明します。ここでの複数認証は、複数のユーザー モデルに対して認証を行うプロセスにすぎません。

Laravel 5.6で複数の認証を設定する方法

#次のセクションでは、Laravel の組み込み認証機能を説明します。具体的には、管理者ユーザーと通常ユーザーの両方を認証する方法を説明します。

ステップ 1: Laravel のセットアップ

composer を使用して Laravel プロジェクトをセットアップします。

composer create-project --prefer-dist laravel/laravel project-name
ログイン後にコピー

ステップ 2: データベース構成

.env ファイルを開き、ファイルにデータベース資格情報を設定します。

DB_DATABASE= database-name
DB_USERNAME= root
DB_PASSWORD= database-password
ログイン後にコピー

ステップ 3: 認証

Laravel の組み込み認証システムを使用して登録してログインするには、次のコマンドを実行するだけです:

php artisan make:auth
ログイン後にコピー

ステップ 4: モデルと移行のセットアップ

管理者用のモデルと移行の作成とセットアップ:

php artisan make:model Admin -m
ログイン後にコピー

管理者用のモデルをセットアップするには、app/Admin.php に移動します。そして、次のコードでコードを更新します:

/**
 * Remove 'use Illuminate\Database\Eloquent\Model;'
 */
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
    use Notifiable;
// The authentication guard for admin
    protected $guard = 'admin';
     /**
      * The attributes that are mass assignable.
      *
      * @var array
      */
    protected $fillable = [
        'email', 'password',
    ];
     /**
      * The attributes that should be hidden for arrays.
      *
      * @var array
      */
    protected $hidden = [
        'password', 'remember_token',
    ];
ログイン後にコピー

管理者用の移行テーブルを設定するには、database/migration/***_create_admins_table.php に移動し、次のコードでコードを更新します:

//
{
    Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
    });
 }
//
ログイン後にコピー

ステップ 5: 管理者コントローラーのセットアップ

管理者用のコントローラーを作成するには、次のコマンドを実行します。

php artisan make:controller AdminController
ログイン後にコピー

コントローラーをセットアップするには、次の場所に移動します。 app/Http/Controllers/AdminController.php を開き、次のコードでコードを更新します:

class AdminController extends Controller{    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {        $this->middleware('auth:admin');
    }
    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {        return view('admin');
    }}
ログイン後にコピー

ステップ 6: 管理者ユーザーのログイン コントローラーを設定します

Toログイン コントローラーを作成するには、次のコマンドを実行します。

php artisan make:controller Auth/AdminLoginController
ログイン後にコピー

ログイン コントローラーを設定するには、app/Http/Controllers/Auth/AdminLoginController.php に移動し、次のコードでコードを更新します。

use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\AuthenticatesUsers;use Illuminate\Support\Facades\Auth;class AdminLoginController extends Controller{    /**
     * Show the application’s login form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {        return view(’auth.admin-login’);
    }
    protected function guard(){        return Auth::guard('admin');
    }
    
    use AuthenticatesUsers;    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/admin/dashboard';    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {        $this->middleware('guest:admin')->except('logout');
    }}
ログイン後にコピー

ステップ 7: 通常ユーザー用のログイン コントローラーをセットアップする

通常ユーザー用にログイン コントローラーをセットアップするには、app/Http/Controllers/Auth/LoginController.php に移動し、次のコードで更新します。 コード:

///**
 * Show the application's login form.
 *
 * @return \Illuminate\Http\Response
 */public function showLoginForm(){    return view('auth.login');}//
ログイン後にコピー

ステップ 8: 管理者用のログイン ビューを設定する

管理者用のログイン ビューを作成して設定するには、リソース/ビューに移動します。 /auth/ および新しいファイル admin-login.blade.php を作成します。 resource/views/auth/login.blade.php からコードをコピーし、新しいファイルに貼り付けます。

次に、次の内容で新しいファイルを更新します。

// 
<div class="card-header">{{ __('Admin Login') }}</div>
<div class="card-body">
  <form method="POST" action="{{ route('admin.login.submit') }}">
//
ログイン後にコピー

ステップ 9: 管理者のホーム ビューを設定する

ホーム ビューを作成して設定するには管理者ビューの場合は、resources/views/ に移動し、新しいファイル admin-home.blade.php を作成します。 resource/views/home.blade.php のコードをコピーし、新しいファイルに貼り付けます。

次に、次の内容で新しいファイルを更新します。

// 
<div class="card">
   <div class="card-header">Admin Dashboard</div>
//
ログイン後にコピー

ステップ 10: Web アプリケーション ルーティングを設定する

アプリケーション用に Web を設定するにはルートの場合は、routes/web.php に移動し、次のコードでコードを更新します。

//
Route::get('/', function () {
    return view('layouts.app');
});
Route::prefix('admin')->group(function() {
    Route::get('/login', 'Auth\AdminLoginController@showLoginForm')->name('admin.login');
    Route::post('/login', 'Auth\AdminLoginController@login')->name('admin.login.submit');
    Route::get('/home', 'AdminController@index')->name('admin.home');
});
//
ログイン後にコピー

ステップ 11: 例外ハンドラーを設定する

例外を設定するにはハンドラー、app/Exceptions/Hanler.php に移動し、次のコードでコードを更新してください:

//
use Illuminate\Auth\AuthenticationException;
//
//
protected $dontReport = [
     \Illuminate\Auth\AuthenticationException::class,
     \Illuminate\Auth\Access\AuthorizationException::class,
     \Symfony\Component\HttpKernel\Exception\HttpException::class,
     \Illuminate\Database\Eloquent\ModelNotFoundException::class,
     \Illuminate\Session\TokenMismatchException::class,
     \Illuminate\Validation\ValidationException::class,
];
//
//
public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}
    /**
     * Convert an authentication exception into an unauthenticated response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Auth\AuthenticationException  $exception
     * @return \Illuminate\Http\Response
     */
 protected function unauthenticated($request, AuthenticationException $exception)
 {
    if ($request->expectsJson()) {
     return response()->json(['error' => 'Unauthenticated.'],401);
    }
     $guard = array_get($exception->guards(), 0);
      switch ($guard) {
        case 'admin': $login = 'admin.login';
        break;
        default: $login = 'login';
        break;
      }
        return redirect()->guest(route($login));
  }
ログイン後にコピー

ステップ 12: リダイレクト ミドルウェアをセットアップする

使用する認証後 リダイレクトミドルウェアを設定するには、app/Http/Middleware/RedirectIfAuthenticated.php に移動し、次のコードでコードを更新します。

//
public function handle($request, Closure $next, $guard = null)
{
        switch ($guard) {
            case 'admin' :
                if (Auth::guard($guard)->check()) {
                    return redirect()->route('admin.home');
                }
                break;
            default:
                if (Auth::guard($guard)->check()) {
                    return redirect()->route('home');
                }
                break;
        }
     return $next($request);
}
//
ログイン後にコピー

ステップ 13: 認証構成を設定する

認証構成をセットアップするには、config/auth.php に移動し、次のコードでコードを更新します:

//
'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
//
//
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],
        'admin-api' => [
            'driver' => 'token',
            'provider' => 'admins',
        ],
    ],
//
//
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
       'admins' => [
            'driver' => 'eloquent',
            'model' => App\Admin::class,
        ],
    ],
//
//
'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'admins' => [
            'provider' => 'admins',
            'table' => 'password_resets',
            'expire' => 15,
        ],
    ],
ログイン後にコピー

ステップ 14: データベース移行のデフォルトの文字列の長さを設定する

データベース移行のデフォルトの文字列長を設定するには、app/Providers/AppServiceProvider.php に移動し、次のコードでコードを更新します。

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

//

public function boot(){
    Schema::defaultStringLength(191);
}
ログイン後にコピー

ステップ 15:移行

移行を実行するには、次のコマンドを入力します:

php artisan migrate
ログイン後にコピー

パッチを使用して管理者ログイン資格情報を入力します:

php artisan tinker

$admin = new App\Admin
$admin->email = 'admin@app.com'
$admin->password = Hash::make(’admin-password’)
$admin->save()
ログイン後にコピー

これで簡単に設定できるようになりました。 Laravel プロジェクトで複数の ID を確認してください。

以上がLaravel 5.6で複数の認証を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

2025 PHP状況調査の発表 2025 PHP状況調査の発表 Mar 03, 2025 pm 04:20 PM

2025 PHP状況調査の発表

See all articles