![](/img/trans.png)
[英]Laravel Auth::guard(guard)->check() not working as expected
[英]Laravel guard not working
我正在嘗試使用laravel 5.5實現管理員/用戶登錄。 我已經創建了與用戶模型完全相同的管理員模型,並為管理員設置了防護措施。 但是在登錄期間,沒有通過防護措施:
這是我的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']);
}
}
我嘗試調試,然后進入vendor文件夾,進入AuthenticatesUsers類,並調試了請求:
如您所見,它使用的是User模型和網絡防護。 這是守衛的配置文件:
'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
]
],
沒關系,我想通了。 Guard不是該類的屬性,而是一個函數,因此我必須替換繼承的Guard函數,並使用Auth外觀,如下所示:
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']);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.