ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 5.2 新機能シリーズ -- マルチユーザー認証機能の詳細な実装

Laravel 5.2 新機能シリーズ -- マルチユーザー認証機能の詳細な実装

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-20 12:36:59
オリジナル
934 人が閲覧しました

Laravel 5.2 では、マルチユーザー認証のサポートが追加され、異なるデータテーブルユーザー (フロントエンドユーザーとバックエンドユーザーなど) が同時にログインして認証できるようになります。次に、マルチユーザーのログインと登録機能の実装について簡単に紹介します。

1. 認証スキャフォールディングを生成します

まず、Laravel 5.2 が提供する認証スキャフォールディングを使用して初期化作業を完了します:

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

The Artisanコマンドは、ユーザー認証に必要なルート、ビュー、および HomeController を生成します:

ルーティング ファイル Routes.php を表示すると、ファイルが更新されていることがわかります:

Route::group(['middleware' => 'web'], function () {    Route::auth();    Route::get('/home', 'HomeController@index');});
ログイン後にコピー

このうち Route ::auth() は登録ログインルートを定義しており、/home は認証通過後のジャンプルートとなっています。

2. フロントエンド ユーザー ログインを実装します

次に、最初にフロントエンド ユーザー ログインを実装します。これは、Laravel に付属する User ユーザー ログインです。上記のスキャフォールディングを通じて、認証に必要なすべてのコードが生成されました。あとは、移行コマンドを使用してユーザー認証関連のテーブルを作成するだけです。

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

コマンドが実行された後、 users テーブルとpassword_resets テーブルが生成され、それぞれユーザー マスター テーブルとパスワード リセット テーブルが生成されます。

次に、ブラウザに http://laravel.app/register と入力して新しいユーザーを登録します。

登録が成功した後、 test という名前のユーザーを作成します。 http://laravel.app/home と入力すると、ログインしていることがわかります:

3. 認証構成ファイルを編集します

マルチユーザー認証を実装するには、まず認証構成ファイル auth.php を構成する必要があります。ここで実装する機能はフロントエンドとバックエンドのユーザー ログインであるため、対応する構成は次のとおりです:

<?phpreturn [    'defaults' => [        'guard' => 'web',        'passwords' => 'users',    ],    'guards' => [        'web' => [            'driver' => 'session',            'provider' => 'users',        ],        'admin' => [            'driver' => 'session',            'provider' => 'admins',        ],        'api' => [            'driver' => 'token',            'provider' => 'users',        ],    ],    'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => App\User::class,        ],        'admins' => [            'driver' => 'eloquent',            'model' => App\Admin::class,        ],    ],    'passwords' => [        'users' => [            'provider' => 'users',            'email' => 'auth.emails.password',            'table' => 'password_resets',           'expire' => 60,        ],    ],];
ログイン後にコピー

認証はガードとプロバイダーで構成されているため (ユーザー認証ドキュメントを参照)、これら 2 つの設定項目にそれぞれ admin および admins オプションを追加しました。

4. バックグラウンド ユーザー モデルを作成します

次に、バックグラウンド ユーザー ログインを実装します。まず、次の Artisan コマンドを使用してバックグラウンド ユーザー モデルを生成します。

php artisan make:model Admin --migration
ログイン後にコピー
--migration オプションを使用すると、対応するユーザー テーブル管理者が生成されます。このデータ テーブルのフィールドがユーザーと同じになるように定義します。

Schema::create('admins', function (Blueprint $table) {    $table->increments('id');    $table->string('name');    $table->string('email')->unique();    $table->string('password', 60);    $table->rememberToken();    $table->timestamps();});
ログイン後にコピー
次に、次のコマンドを実行してテーブルを生成します。移行コマンド:

php artisan migrate
ログイン後にコピー
ログイン後にコピー
次に、Admin モデル クラスを次のように更新します。

<?phpnamespace App;use Illuminate\Foundation\Auth\User as Authenticatable;class Admin extends Authenticatable{    /**     * The attributes that are mass assignable.     *     * @var array     */    protected $fillable = [        'name', 'email', 'password',    ];    /**     * The attributes excluded from the model's JSON form.     *     * @var array     */    protected $hidden = [        'password', 'remember_token',    ];}
ログイン後にコピー

5. バックグラウンド ユーザー認証ルートとコントローラー を定義します。

次に、バックグラウンド ユーザー認証ルートを定義します。routes.php コードを次のように変更します。

Route::group(['middleware' => ['web']], function () {    Route::auth();    Route::get('home', 'HomeController@index');    Route::get('admin/login', 'Admin\AuthController@getLogin');    Route::post('admin/login', 'Admin\AuthController@postLogin');    Route::get('admin/register', 'Admin\AuthController@getRegister');    Route::post('admin/register', 'Admin\AuthController@postRegister');    Route::get('admin', 'AdminController@index');});
ログイン後にコピー
次に、Artisan コマンドを使用して、対応するコントローラーを作成します。

php artisan make:controller Admin/AuthControllerphp artisan make:controller AdminController
ログイン後にコピー
Edit Admin /AuthController.php コードを次のように編集します。

<?phpnamespace App\Http\Controllers\Admin;use App\Admin;use Validator;use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\ThrottlesLogins;use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;class AuthController extends Controller{    use AuthenticatesAndRegistersUsers, ThrottlesLogins;    protected $redirectTo = '/admin';    protected $guard = 'admin';    protected $loginView = 'admin.login';    protected $registerView = 'admin.register';    public function __construct()    {        $this->middleware('guest:admin', ['except' => 'logout']);    }    protected function validator(array $data)    {        return Validator::make($data, [            'name' => 'required|max:255',            'email' => 'required|email|max:255|unique:admins',            'password' => 'required|confirmed|min:6',        ]);    }    protected function create(array $data)    {        return Admin::create([            'name' => $data['name'],            'email' => $data['email'],            'password' => bcrypt($data['password']),        ]);    }}
ログイン後にコピー
AdminController.php コードを次のように編集します。

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Http\Requests;use App\Http\Controllers\Controller;use Auth;class AdminController extends Controller{    public function __construct()    {        $this->middleware('auth:admin');    }    public function index()    {        $admin = Auth::guard('admin')->user();        return $admin->name;    }}
ログイン後にコピー

6. ファイルの作成と変更を表示します

最後に、バックグラウンド ユーザー認証に対応するビュー ファイルを作成する必要があります。ここでは、フロントエンド ユーザー ビュー テンプレートをコピーして少し変更します。

cp -r resources/views/auth resources/views/admin
ログイン後にコピー
ログインと登録を変更します。 resource/views/admin ディレクトリの下のフォーム送信アドレス:

/login -> /admin/login/register -> /admin/register
ログイン後にコピー

7 、バックグラウンド ユーザー認証を実現

http://laravel.app/admin/ にアクセスしてください。ブラウザに登録すると、登録ページも表示されます:

1 つ登録する ユーザー名 admin のユーザーが登録に成功すると、ページは http://laravel.app にジャンプします/admin、認証が成功したことを示します。

これで表ユーザーと裏ユーザーの同時ログイン認証機能が完成しました。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート