Laravel Multi Auth using Middle ware



我创建了一个应用程序,user_type(存储在表中(作为管理员,用户,super_admin并创建了2个中间件,例如管理员和超级管理员。当我尝试以用户身份登录并访问设置为管理员的功能时,它会正确重定向到主页,当管理员尝试正确访问其访问时,但是当超级管理员尝试访问分配给管理员的相同功能时,它无法访问我为超级管理员设置了正确的参数和路由与管理员相同, 请在下面看看我的代码

这是我的管理员中间件:

public function handle($request, Closure $next, $guard = 'admin')
    {
        if (Auth::user()->user_type =='admin') {
            return $next($request);
        } else {
             return redirect('home')->with('error','You have not admin access');
        }
    }

这是我的超级管理员中间件:

public function handle($request, Closure $next, $guard = 'super_admin') {
    if (Auth::user()->user_type =='super_admin') {
        return $next($request);
    } else {
         return redirect('home')->with('error','You have not admin access');
    }
}

这是我的路由网络.php

Route::get('/home', 'HomeController@index')->name('home');
    Route::get('/contact', 'StudentController@create')->name('contact');
    //User Activate
    Route::group(['middleware' => ['admin'], 'namespace' => 'Admin', 'prefix' => 'admin'], function(){
    	Route::resource('/admin', 'AdminController');
    	Route::get('/get-users/', 'AdminController@getUsers');
    	Route::get('/get-cfs/', 'AdminController@getCfs');
    	Route::get('/random-user/', 'AdminController@randomUser');
    	//Route::resource('/student', 'StudentController');
    });
    Route::group(['middleware' => ['superadmin'], 'namespace' => 'SuperAdmin', 'prefix' => 'superadmin'], function(){
    	Route::resource('/superAdmin', 'SuperAdminController');
    	Route::get('/get-users/', 'AdminController@getUsers');
    	Route::get('/get-cfs/', 'AdminController@getCfs');
    	Route::get('/random-user/', 'AdminController@randomUser');
    });

您没有指定超级用户拥有和管理员拥有的所有权限。您只是指定了两个守卫super_adminadmin.但是拉拉维尔怎么知道super_admin拥有admin拥有的所有特权呢?您应该实现这一点,或者您可以在admin中间件中简单地执行此操作。

public function handle($request, Closure $next, $guard = 'admin')
{
    if (Auth::user()->user_type =='super_admin' || Auth::user()->user_type =='admin') {
        return $next($request);
    } else {
         return redirect('home')->with('error','You have not admin access');
    }
}

最新更新