수색…
다중 인증
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(...)