Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel Middleware总是返回false_Php_Laravel 5_Middleware - Fatal编程技术网

Php Laravel Middleware总是返回false

Php Laravel Middleware总是返回false,php,laravel-5,middleware,Php,Laravel 5,Middleware,我创建了4个中间件:1个用于检查用户是否是管理员之一(角色id!=“4”),1个用于超级管理员(角色id==1),1个用于普通管理员(角色id==2),1个用于编辑器管理员(角色id==3) 我的用户表有一个role\u id列 check用户的中间件是其中一个管理员。但是其他中间件总是返回false 我的路线 Route::group(['middleware'=>'admin'],function(){ Route::get('/backlogout','backend\Bac

我创建了4个中间件:1个用于检查用户是否是管理员之一(角色id!=“4”),1个用于超级管理员(角色id==1),1个用于普通管理员(角色id==2),1个用于编辑器管理员(角色id==3)

我的用户表有一个
role\u id

check用户的中间件是其中一个管理员。但是其他中间件总是返回false

我的路线

Route::group(['middleware'=>'admin'],function(){
    Route::get('/backlogout','backend\BackloginController@getLogout')->name('back-logout');
    Route::get('/dashboard','BackendController@index')->name('backend');
    Route::group(['prefix' => 'categories', 'middleware' => ['superadmin', 'ad','editor']], function () {
        Route::get('/index', ['as' => 'back.categories.index', 'uses' => 'backend\CategoriesController@index']);
        Route::any('/store', ['as' => 'back.categories.store', 'uses' => 'backend\CategoriesController@store']);
        Route::any('/create', ['as' => 'back.categories.create', 'uses' => 'backend\CategoriesController@create']);
        Route::any('/edit/{id}', ['as' => 'back.categories.edit', 'uses' => 'backend\CategoriesController@edit']);
        Route::any('/update/{id}', ['as' => 'back.categories.update', 'uses' => 'backend\CategoriesController@update']);
        Route::any('/destroy/{id}', ['as' => 'back.categories.destroy', 'uses' => 'backend\CategoriesController@destroy']);
    });
    Route::group(['prefix' => 'products','middleware' => ['superadmin','editor']], function () {
        Route::get('/index', ['as' => 'back.products.index', 'uses' => 'backend\ProductsController@index']);
        Route::any('/store', ['as' => 'back.products.store', 'uses' => 'backend\ProductsController@store']);
        Route::any('/create', ['as' => 'back.products.create', 'uses' => 'backend\ProductsController@create']);
        Route::any('/edit/{id}', ['as' => 'back.products.edit', 'uses' => 'backend\ProductsController@edit']);
        Route::any('/update/{id}', ['as' => 'back.products.update', 'uses' => 'backend\ProductsController@update']);
        Route::any('/imgview/{id}', ['as' => 'back.products.imgview', 'uses' => 'backend\ProductsController@imgview']);
        Route::any('/updateimg/{id}', ['as' => 'back.products.updateimg', 'uses' => 'backend\ProductsController@updateImg']);
        Route::any('/destroy/{id}', ['as' => 'back.products.destroy', 'uses' => 'backend\ProductsController@destroy']);
    });
    Route::group(['prefix' => 'users','middleware' => ['superadmin', 'ad']], function () {
        Route::get('/index', ['as' => 'back.users.index', 'uses' => 'backend\UsersController@index']);
        Route::any('/store', ['as' => 'back.users.store', 'uses' => 'backend\UsersController@store']);
        Route::any('/create', ['as' => 'back.users.create', 'uses' => 'backend\UsersController@create']);
        Route::any('/edit/{id}', ['as' => 'back.users.edit', 'uses' => 'backend\UsersController@edit']);
        Route::any('/update/{id}', ['as' => 'back.users.update', 'uses' => 'backend\UsersController@update']);
        Route::any('/destroy/{id}', ['as' => 'back.users.destroy', 'uses' => 'backend\UsersController@destroy']);
    });
});
my kernel.php

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'admin'=>\App\Http\Middleware\CheckAdmin::class,
        'superadmin'=>\App\Http\Middleware\CheckSuperAdmin::class,
        'ad'=>\App\Http\Middleware\CheckAd::class,
        'editor'=>\App\Http\Middleware\CheckEditor::class,
    ];
我的checkadmin(检查用户是否是管理员之一)middl这一个有效吗

class CheckAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id !='4'){
            return $next($request);
        }
        return redirect()->route('backend-login');
    }
}
我的checksuperadmin中间件

class CheckSuperAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id =='1'){
            return $next($request);
        }
        Session::flash('notsuper','only super admin can access this page');
        return redirect()->route('backend');

    }
}
class CheckEditor
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id =='3'){
            return $next($request);
        }
        Session::flash('noteditor','only editor can access this page');
        return redirect()->route('backend');

    }
}
我的checkad(检查正常管理)MIDTLWARE

class CheckAd
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id =='2'){
            return $next($request);
        }
        Session::flash('notadmin','only admin can access this page');
        return redirect()->route('backend');

    }
}
我的checkeditor中间件

class CheckSuperAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id =='1'){
            return $next($request);
        }
        Session::flash('notsuper','only super admin can access this page');
        return redirect()->route('backend');

    }
}
class CheckEditor
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id =='3'){
            return $next($request);
        }
        Session::flash('noteditor','only editor can access this page');
        return redirect()->route('backend');

    }
}

我不知道为什么,但是所有的checksuperadmin、checkadm、checkeditor总是返回false

从第一个组中删除中间件

Route::group(['prefix' => 'categories', 'middleware' => ['superadmin', 'ad','editor']], function () {
    Route::get('/index', ['as' => 'back.categories.index', 'uses' => 'backend\CategoriesController@index']);
    Route::any('/store', ['as' => 'back.categories.store', 'uses' => 'backend\CategoriesController@store']);
    Route::any('/create', ['as' => 'back.categories.create', 'uses' => 'backend\CategoriesController@create']);
    Route::any('/edit/{id}', ['as' => 'back.categories.edit', 'uses' => 'backend\CategoriesController@edit']);
    Route::any('/update/{id}', ['as' => 'back.categories.update', 'uses' => 'backend\CategoriesController@update']);
    Route::any('/destroy/{id}', ['as' => 'back.categories.destroy', 'uses' => 'backend\CategoriesController@destroy']);
});
Route::group(['prefix' => 'products','middleware' => ['superadmin','editor']], function () {
    Route::get('/index', ['as' => 'back.products.index', 'uses' => 'backend\ProductsController@index']);
    Route::any('/store', ['as' => 'back.products.store', 'uses' => 'backend\ProductsController@store']);
    Route::any('/create', ['as' => 'back.products.create', 'uses' => 'backend\ProductsController@create']);
    Route::any('/edit/{id}', ['as' => 'back.products.edit', 'uses' => 'backend\ProductsController@edit']);
    Route::any('/update/{id}', ['as' => 'back.products.update', 'uses' => 'backend\ProductsController@update']);
    Route::any('/imgview/{id}', ['as' => 'back.products.imgview', 'uses' => 'backend\ProductsController@imgview']);
    Route::any('/updateimg/{id}', ['as' => 'back.products.updateimg', 'uses' => 'backend\ProductsController@updateImg']);
    Route::any('/destroy/{id}', ['as' => 'back.products.destroy', 'uses' => 'backend\ProductsController@destroy']);
});
Route::group(['prefix' => 'users','middleware' => ['superadmin', 'ad']], function () {
    Route::get('/index', ['as' => 'back.users.index', 'uses' => 'backend\UsersController@index']);
    Route::any('/store', ['as' => 'back.users.store', 'uses' => 'backend\UsersController@store']);
    Route::any('/create', ['as' => 'back.users.create', 'uses' => 'backend\UsersController@create']);
    Route::any('/edit/{id}', ['as' => 'back.users.edit', 'uses' => 'backend\UsersController@edit']);
    Route::any('/update/{id}', ['as' => 'back.users.update', 'uses' => 'backend\UsersController@update']);
    Route::any('/destroy/{id}', ['as' => 'back.users.destroy', 'uses' => 'backend\UsersController@destroy']);
});

从第一个组中删除中间件

Route::group(['prefix' => 'categories', 'middleware' => ['superadmin', 'ad','editor']], function () {
    Route::get('/index', ['as' => 'back.categories.index', 'uses' => 'backend\CategoriesController@index']);
    Route::any('/store', ['as' => 'back.categories.store', 'uses' => 'backend\CategoriesController@store']);
    Route::any('/create', ['as' => 'back.categories.create', 'uses' => 'backend\CategoriesController@create']);
    Route::any('/edit/{id}', ['as' => 'back.categories.edit', 'uses' => 'backend\CategoriesController@edit']);
    Route::any('/update/{id}', ['as' => 'back.categories.update', 'uses' => 'backend\CategoriesController@update']);
    Route::any('/destroy/{id}', ['as' => 'back.categories.destroy', 'uses' => 'backend\CategoriesController@destroy']);
});
Route::group(['prefix' => 'products','middleware' => ['superadmin','editor']], function () {
    Route::get('/index', ['as' => 'back.products.index', 'uses' => 'backend\ProductsController@index']);
    Route::any('/store', ['as' => 'back.products.store', 'uses' => 'backend\ProductsController@store']);
    Route::any('/create', ['as' => 'back.products.create', 'uses' => 'backend\ProductsController@create']);
    Route::any('/edit/{id}', ['as' => 'back.products.edit', 'uses' => 'backend\ProductsController@edit']);
    Route::any('/update/{id}', ['as' => 'back.products.update', 'uses' => 'backend\ProductsController@update']);
    Route::any('/imgview/{id}', ['as' => 'back.products.imgview', 'uses' => 'backend\ProductsController@imgview']);
    Route::any('/updateimg/{id}', ['as' => 'back.products.updateimg', 'uses' => 'backend\ProductsController@updateImg']);
    Route::any('/destroy/{id}', ['as' => 'back.products.destroy', 'uses' => 'backend\ProductsController@destroy']);
});
Route::group(['prefix' => 'users','middleware' => ['superadmin', 'ad']], function () {
    Route::get('/index', ['as' => 'back.users.index', 'uses' => 'backend\UsersController@index']);
    Route::any('/store', ['as' => 'back.users.store', 'uses' => 'backend\UsersController@store']);
    Route::any('/create', ['as' => 'back.users.create', 'uses' => 'backend\UsersController@create']);
    Route::any('/edit/{id}', ['as' => 'back.users.edit', 'uses' => 'backend\UsersController@edit']);
    Route::any('/update/{id}', ['as' => 'back.users.update', 'uses' => 'backend\UsersController@update']);
    Route::any('/destroy/{id}', ['as' => 'back.users.destroy', 'uses' => 'backend\UsersController@destroy']);
});

您正在将多个中间件应用于所有路由组。在这种情况下,只有当用户满足所有条件时,Laravel才会授予您访问权限。尝试这样做:

class CheckEditor {
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id <='3')
            //do something
    }
}
class CheckAd {
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id <='2')
            //do something
    }
}

。。。等,以获取其他访问级别。仅当您希望仅授予此中间件的访问权限时,才在角色中间件上使用
=

您正在将多个中间件应用于所有路由组。在这种情况下,只有当用户满足所有条件时,Laravel才会授予您访问权限。尝试这样做:

class CheckEditor {
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id <='3')
            //do something
    }
}
class CheckAd {
    public function handle($request, Closure $next)
    {
        if(Auth::check() && Auth::user()->role_id <='2')
            //do something
    }
}

。。。等,以获取其他访问级别。仅当您希望仅授予对此角色的访问权限时,才在角色中间件上使用
=

您是否拥有具有多个角色id的同一用户??否我不是每个用户只有一个角色id您是否拥有具有多个角色id的同一用户??否我不是每个用户只有一个角色id