多重認證
Laravel 允許你使用具有特定防護的多種身份驗證型別。
在 laravel 5.3 中,多重身份驗證與 Laravel 5.2 略有不同
我將解釋如何在 5.3 中實現多重身份驗證功能
首先,你需要兩個不同的使用者模型
cp App/User.php App/Admin.php
如果你使用不同的模型,請將類名更改為 Admin 並設定名稱空間。它應該看起來像
應用程式\ admin.php
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class Admin extends Authenticatable
{
    use Notifiable;
    protected $fillable = ['name', 'email', 'password'];
    protected $hidden   = ['password', 'remember_token'];
}
你還需要為管理員建立遷移
php artisan make:migration create_admins_table
然後使用預設使用者遷移的內容編輯遷移檔案。看起來像這樣
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateAdminsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');        
            $table->rememberToken();
            $table->timestamps();
            $table->softDeletes();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('admins');
    }
}
編輯 config / auth.php
'guards'    => [
        'web'   => [
            'driver'   => 'session',
            'provider' => 'users',
        ],
        'api'   => [
            'driver'   => 'token',
            'provider' => 'users',
        ],
        //Add Admin Guard
        'admin' => [
            'driver'   => 'session',
            'provider' => 'admins',
        ],
    ],
和
'providers' => [
        'users'  => [
            'driver' => 'eloquent',
            'model'  => App\User::class,
        ],
        //Add Admins Provider
        'admins' => [
            'driver' => 'eloquent',
            'model'  => App\Admin::class,
        ],
    ],
請注意,我們新增了兩個條目。一個在後衛變數之一提供商變數。
這就是你如何使用其他後衛然後網路
我的 App \ Http \ Controllers \ Admin \ LoginController
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller
{
    use AuthenticatesUsers;
    protected $guard = 'admin';
    protected $redirectTo = '/admin/';
    public function showLoginForm()
    {
        return view('admin.login');
    }
    protected function guard()
    {
        return Auth::guard($this->guard);
    }
}
這需要很少的解釋。
簡而言之, Auth::guard(‘admin’) 允許你使用 auth 方法(例如登入,登出,註冊等)與你的管理員保護。
例如
Auth::guard('admin')->login($user)
將在 admins 表中搜尋$ user 並與使用者一起登入
Auth::login($user)
將與使用者表正常工作。預設保護在 config / auth.php 中使用 defaults 陣列指定。在新鮮的 laravel 它是 web。
在控制器中,你必須實現 AuthenticatesUsers 中的方法以顯示自定義檢視路徑。並且你需要實現其他功能,例如 guard 以使用你的新使用者警衛。
在此示例中,我的管理員登入名為 admin / login.blade
通過實現 guard() 函式返回 **Auth::guard(‘admin’),**所有 AuthenticatesUsers 特徵方法都與 admin 後衛一起使用。
在早期版本的 laravel 中,這與 5.3 略有不同
在 5.2 中 getGuard 函式從類返回$ guard 變數並且 main 函式(login)使用它
Auth::guard($guard)->attempt(...)
在 5.3 保護函式中返回整個 Auth :: guard() 和 main 函式使用它
$this->guard()->attempt(...)