2017-09-25 96 views
0

我试图用laravel 5.5实现管理员/用户登录。我创建了管理员模型,与用户完全一样,并为管理员设置了警卫。但登录时,卫兵不被通过:Laravel后卫不工作

这是我AdminController:

<?php 

namespace App\Http\Controllers; 

use App\Http\Requests; 
use Illuminate\Http\Request; 
use Illuminate\Foundation\Auth\AuthenticatesUsers; 


class AdminController extends Controller{ 
    use AuthenticatesUsers; 

    protected $guard = 'admin'; 

    public function showLoginForm(){ 
     return view('admin')->with(['title' => 'Panel de Administrador - Iniciar Sesión', 'bodyClass' => 'admin-view']); 
    } 
} 

我试图调试,并走进了供应商的文件夹,以AuthenticatesUsers类和调试要求:

enter image description here

正如您所看到的,它使用用户模型和网络守卫。下面是对警卫配置文件:

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

    'api' => [ 
     'driver' => 'token', 
     'provider' => 'users', 
    ], 

    'admin' => [ 
     'driver' => 'session', 
     'provider' => 'admins', 
    ] 
], 

,然后我有供应商:

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

回答

0

没关系我想通了。守护不是这个类的属性,它是一个函数,所以我必须替换继承的守护函数,并使用Auth facade,如下所示:

use Illuminate\Support\Facades\Auth; 

class AdminController extends Controller{ 
    use AuthenticatesUsers; 

    public function guard(){ 
     return Auth::guard('admin'); 
    } 

    public function showLoginForm(){ 
     return view('admin')->with(['title' => 'Panel de Administrador - Iniciar Sesión', 'bodyClass' => 'admin-view']); 
    } 
}