laravel - 无法将多个身份验证重定向到不同的页面

时间:2017-12-21 12:53:36

标签: php laravel redirect laravel-5 laravel-5.4

我使用laravel 5.4,我想将这三种不同类型的用户重定向到不同的页面

模式

Types
+-------+-------------+
| id    | name        |
+-------+-------------+
| 1     | Super Admin |
| 2     | Admin       |
| 3     | Cashier     |
+-------+-------------+

Users    
+-------+---------+-------------+
| id    | type_id | name        |
+-------+---------+-------------+
| 1     | 1       | Super Admin |
| 2     | 2       | Admin       |
| 3     | 3       | Cashier     |
+-------+---------+-------------+

的LoginController

public function redirectTo()
{
    if (Auth::user()->type_id === 1) {
        return '/superAdmin/home';
    }
    elseif (Auth::user()->type_id === 2) {
        return '/admin/home';
    }
    elseif (Auth::user()->type_id === 3) {
        return '/kasir/home';
    }
}

的HomeController

public function superAdmin()
{
    return view('superAdmin.home');
}

public function admin()
{
    return view('admin.home');
}

public function kasir()
{
    return view('kasir.home');
}

路线

Route::get('/', 'HomeController@kasir');
Route::get('/admin/home', 'HomeController@admin');
Route::get('/superAdmin/home', 'HomeController@superAdmin');

我按照上一个问题的答案

redirecting three different user types/roles to different pages

我尝试使用type_id = 1的用户登录,这意味着用户是超级管理员,但它始终重定向到Route::get('/','HomeController@cashier');以及具有其他角色的用户

问题是每个角色都可以访问该页面属于另一个角色,我应该怎么做才能修复它?

1 个答案:

答案 0 :(得分:0)

你可以做一件我在上一个项目中使用laravel的东西。

您必须在家庭控制器的索引方法中编写此代码,因此在加载主页时,它将检查用户类型ID并重定向到适当的页面。

 if(Auth::check()) {
        if(Auth::user()->in_usertype_id == 1) {
              return view('admin.dashboard');
        }elseif(Auth::user()->in_usertype_id == 2) {
              return view('admin.dashboard1');
       else{
             return view('admin.dashboard3');
       }
 }else{
             return redirect('login')->with('error', 
             Lang::get('message.unauthorize-access'));
}

希望这会对你有所帮助。