Zoeken…


Multi-authenticatie

Met Laravel kunt u meerdere verificatietypen gebruiken met specifieke bewakers.

In laravel 5.3 verschilt meervoudige authenticatie weinig van Laravel 5.2

Ik zal in 5.3 uitleggen hoe de multiauthenticatiefunctie te implementeren

Eerst heb je twee verschillende gebruikersmodellen nodig

cp App/User.php App/Admin.php

wijzig de klassennaam in Beheerder en stel de naamruimte in als u andere modellen gebruikt. het zou eruit moeten zien

App \ 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'];

}

Ook moet u een migratie voor admin maken

php artisan make:migration create_admins_table

bewerk vervolgens het migratiebestand met de inhoud van de standaard gebruikersmigratie. Het lijkt hierop

<?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 bewerken

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

        'api'   => [
            'driver'   => 'token',
            'provider' => 'users',
        ],
        //Add Admin Guard
        'admin' => [
            'driver'   => 'session',
            'provider' => 'admins',
        ],
    ],

en

'providers' => [
        'users'  => [
            'driver' => 'eloquent',
            'model'  => App\User::class,
        ],
        //Add Admins Provider
        'admins' => [
            'driver' => 'eloquent',
            'model'  => App\Admin::class,
        ],
    ],

Merk op dat we twee ingangen toevoegen. één in bewakers variabel één in providers variabel.

En zo gebruik je de andere bewaker dan "web"

Mijn 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);
    }

}

dit behoeft weinig uitleg.

in een notendop Met Auth :: guard ('admin') kunt u auth-methoden (zoals inloggen, uitloggen, registreren enz.) gebruiken met uw admin guard.

Bijvoorbeeld

Auth::guard('admin')->login($user)

zal $ user zoeken in admins-tabel en inloggen met de user while

Auth::login($user)

werkt normaal met de gebruikerstabel. Standaardbewaking is opgegeven in config / auth.php met standaardwaardenarray . In verse laravel is het "web".

In de controller moet u methoden van AuthenticatesUsers implementeren om uw aangepaste weergavepaden weer te geven. En u moet andere functies implementeren, zoals bewaken om uw nieuwe gebruikersbeschermingen te gebruiken.

In dit voorbeeld is mijn admin-login admin / login.blade

En door de functie guard () te implementeren om Auth :: guard ('admin') te retourneren, werken alle traitmethoden van AuthenticatesUsers met de "admin" guard.

In eerdere versies van larve is dit weinig anders dan 5.3

in 5.2 retourneert de getGuard-functie $ guard variabele uit klasse en hoofdfunctie (login) gebruik het in

Auth::guard($guard)->attempt(...)

in 5.3 bewakingsfunctie retourneert hele Auth :: bewaker () en hoofdfunctie gebruiken het als

$this->guard()->attempt(...)


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow