簡體   English   中英

Laravel后衛無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM