【问题标题】:Laravel 5.7 Guard and Middleware are not WorkingLaravel 5.7 Guard 和 Middleware 不工作
【发布时间】:2019-06-26 12:49:46
【问题描述】:

在我的 Laravel 实例中,守卫或中间件不起作用。我的管理面板始终是可见的身份验证或非身份验证。我不明白问题是什么。

路线

Route::get('/admin', 'admin\adminController@index')->middleware('auth:admin');
Route::get('/admin-login', 'auth\adminLoginController@index');
Route::post('/admin-login', 'auth\adminLoginController@login')->name('admin.login.submit');

控制器

<?php

namespace App\Http\Controllers\auth;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;

class adminLoginController extends Controller
{
    function __construct()
    {
        $this->middleware('guest:admin');
    }

    public function index()
    {
        return view('auth.admin-login');
    }

    public function login(Request $request)
    {
        $this->Validate($request, [
            'email' => 'required|email',
            'password' => 'required|min:6'
        ]);

        if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], false, false)) {
            return redirect('/admin');
        }

        return redirect()->back()->with('message', 'Invalid Information');
    }
}

如果我删除__construct(),那么我可以访问管理员登录页面,否则我无法进入!!

我的auth.php 代码:


警卫:

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

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

    'admin-api' => [
        'driver' => 'token',
        'provider' => 'admins',
    ],

],

提供者

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

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\admin::class,
    ],
],

adminController

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;

class adminController extends Controller
{
    public function index()
    {
        $user = User::all();
        $maleuser = User::where('gender', 'male')->get();
        $femaleuser = User::where('gender', 'female')->get();
        return view('admin/index')
            ->with('users', $user)
            ->with('maleusers', $maleuser)
            ->with('femaleusers', $femaleuser);
    }
}

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    将您的路线修改为如下所示

    Route::get('/admin', 'admin\adminController@index')->middleware('auth:admin');
    Route::get('/admin-login', 'auth\adminLoginController@index')->middleware('guest:admin');
    Route::post('/admin-login', 'auth\adminLoginController@login')->name('admin.login.submit')->middleware('guest:admin');
    

    也在你的 adminLoginController 中编辑这一行

    function __construct()
    {
        $this->middleware('guest:admin')->except('logout');
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-22
      • 2018-11-08
      • 2020-03-26
      • 1970-01-01
      • 2012-02-01
      相关资源
      最近更新 更多