如何使真实用户登录后无法进入管理页面

问题描述 投票:-2回答:1

无法区分用户和管理员身份验证。

这是我的中间件播放器,问题出在我以用户身份登录后,我仍然可以访问管理页面。

中间件:播放器

<?php

namespace App\Http\Middleware;

use Auth;
use Closure;

class Player
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!Auth::check()) {
            return redirect()->route('login');
        }

        if (Auth::user()->role == 1) {
            return redirect()->route('admin');
        }

        if (Auth::user()->role == 2) {
            return $next($request);
        }
    }
}

和这是我的路线

Rout:

// User Route
Auth::routes(['verify' => true]);
Route::get('/player', 'PlayerController@index')->name('player')->middleware('player');
Route::post('/player/submit', 'PlayerController@createPlayer');

// Admin Route
Route::get('/admin', 'AdminController@index')->name('admin')->middleware('admin');
php laravel authentication routing
1个回答
0
投票

请确保在使用App/Http/Kerner.phpdd(Auth::user())帮助程序调试中间件之后,立即在dump(Auth::user())中注册了中间件,并确保请求已成功输入到中间件中。

public function handle($request, Closure $next)
{

    dd(Auth::user());

    // Or

    dd(Auth::user()->role);

    if (!Auth::check()) {
        return redirect()->route('login');
    }

    if (Auth::user()->role == 1) {
        return redirect()->route('admin');
    }

    if (Auth::user()->role == 2) {
        return $next($request);
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.