수색…


다중 인증

Laravel을 사용하면 특정 가드와 함께 여러 인증 유형을 사용할 수 있습니다.

laravel 5.3에서 다중 인증은 Laravel 5.2와 약간 다릅니다

5.3에 multiauthentication 기능을 구현하는 방법을 설명하겠다.

먼저 두 개의 다른 사용자 모델이 필요합니다.

cp App/User.php App/Admin.php

클래스 이름을 Admin으로 변경하고 다른 모델을 사용하는 경우 네임 스페이스를 설정하십시오. 그것은 다음과 같이 보일 것입니다.

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

}

또한 관리자를위한 이전을 생성해야합니다.

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 \ 컨트롤러 \ 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::guard('admin')->login($user)

admins 테이블에서 $ user를 검색하고 사용자와 함께 로그인합니다.

Auth::login($user)

사용자 테이블과 정상적으로 작동합니다. 기본 가드는 기본 배열과 함께 config / auth.php에 지정됩니다. 신선한 laravel에서 그것은 "웹"입니다.

컨트롤러에서는 사용자 정의보기 경로를 표시하기 위해 AuthenticatesUsers의 메서드를 구현해야합니다. 새로운 사용자 가드를 사용하려면 가드와 같은 다른 기능을 구현해야합니다.

이 예에서 내 관리자 로그인은 admin / login.blade입니다.

그리고 Auth :: guard ( 'admin') 를 반환하는 guard () 함수를 구현하면 모든 AuthenticatesUsers trait 메서드가 "admin"가드와 함께 작동합니다.

이전 버전의 laravel에서는 5.3과 약간 다릅니다

5.2 getGuard 함수는 클래스와 main 함수 (로그인)에서 $ guard 변수를 리턴한다.

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

5.3 가드 함수는 전체 Auth :: guard ()를 리턴하고 main 함수는 다음과 같이 사용한다.

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow