首页 > 解决方案 > laravel 上基于角色的路由问题

问题描述

web.php我的 laravel 应用程序中有以下 2 条路线。

Route::get('/admins', 'Admin\DashboardController@index')->middleware('role:1');
Route::get('/admins', 'Admin\DashboardController@index')->middleware('role:2');

但是第一条路线无法正常运行,因为它将角色 id 为 1 的用户发送到不同的路线,而不是主页的管理仪表板。

如何将 bote 用户发送到同一条路线?

我的登录控制器中有以下功能

public function redirectTo() {
        $role = Auth::user()->role_id; 
        switch ($role) {
          
          case '1':
            case '2':
            return '/admins';
            break;
          
            case '3':
            return '/users/profile';
            break;   
      
          default:
            return '/home'; 
          break;
        }
      }

标签: phplaravel

解决方案


protected $redirectTo = '/home'; //Default path to redirect

public function redirectTo() {
    $role = Auth::user()->role_id;
    if($role == 1 || $role == 2){ // Check if admin or reginal admin
        $this->redirectTo = '/admins';
    }
    elseif($role == 3) { // noraml user
        $this->redirectTo = '/users/profile';
    }
    return $this->redirectTo;
}

Remove a route of /adminsfrom web.phpand Remove middleware check or don't pass role id。因为也许您正在重新检查中间件的用户角色。您不必传递角色 ID。你可以进入Auth::user()->role_id中间件。


推荐阅读