首页 > 解决方案 > Laravel 中间件路由到不同的控制器

问题描述

在我的路由/web/php 中,我为管理员用户分组了路由

    Route::group(['middleware' => ['AdminAuth']],function(){
    Route::get('home', 'AdminController@home');
    Route::post('changePassword', 'AdminController@changePassword');
    Route::post('settings', 'AdminController@settings');
    Route::get('getorder', 'AdminController@getorder');

我添加了另一个中间件,想将不同的管理员用户传递给不同的控制器

Route::middleware(['RestaurantAdmin'])->group(function () {
   Route::get('home', 'AdminController@home2');
});

这就是中间件的样子

class AdminAuth
{

public function handle($request, Closure $next)
{
    if(Auth::user()){
        if (Auth::user()->type == "3" || Auth::user()->type == "1") {
            return $next($request);
        }
    }
    Auth::logout();
    return redirect('admin');
 }
}



class RestaurantAdmin
{

    public function handle($request, Closure $next)
    {
        if(Auth::user()){
            if (Auth::user()->type == "3" ) {
                return $next($request);
            }
        }
        return $next($request);
    }
 }

我知道 RestaurantAdmin 无论如何都有相同的输出,但我认为它应该因为不同的路线而去不同的控制器。如果您是 RestaurantAdmin(type = 3),我应该在哪里进行更改以使其工作,您以相同的控制器结束但功能不同。我应该检查每个函数中的类型,然后 if (admin){ }elseif(restaurantadmin){ }或者它应该在路线中,但我理解 nad 使它不正确

标签: laravelroutesmiddleware

解决方案


推荐阅读