laravel - 将三种不同的用户类型/角色重定向到不同的页面

时间:2017-12-20 15:25:00

标签: php laravel 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     |
+-------+---------+-------------+

我写这样的代码

use Auth;

public function redirectTo()
{
    $superAdmin = Auth::user()->type_id = 1;
    $admin = Auth::user()->type_id = 2;
    $cashier = Auth::user()->type_id = 3;

    if ($superAdmin) {
        return '/superAdmin/home';
    }
    elseif ($admin) {
        return '/admin/home';
    }
    elseif ($cashier) {
        return '/cashier/home';
    }
}

但它总是会重定向到' / superAdmin / home',有人可以告诉我的错吗?

4 个答案:

答案 0 :(得分:0)

use Auth;

public function redirectTo()
{
    $superAdmin = 1;
    $admin  = 2;
    $cashier = 3;

    if ($superAdmin == Auth::user()->type_id) {
        return '/superAdmin/home';
    }
    elseif ($admin == Auth::user()->type_id) {
        return '/admin/home';
    }
    elseif ($cashier == Auth::user()->type_id) {
        return '/cashier/home';
    }
}

试试这个

答案 1 :(得分:0)

您需要将type_id与某些值进行比较,例如:

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 '/cashier/home';
    }
}

此外,use constants instead of integers喜欢1,2和3也是一个好主意。

答案 2 :(得分:0)

你需要能够有一个完整的回复,因为用户tupe_id为空,以防万一作为后退。

use Auth;

public function redirectTo()
{
    if(Auth::user()->type_id === null){
        return '/404'; // IF you dont have a type id
    } esleif(Auth::user()->type_id === 1){
        return '/superAdmin/home';
    } esleif(Auth::user()->type_id === 2){
        return '/admin/home';
    } esleif(Auth::user()->type_id === 3){
        return '/cashier/home';
    }
}

答案 3 :(得分:0)

尝试了解您在代码中编写的内容 您将1分配给$ supseadmin以及 AUTH ::用户() - > TYPE_ID

然后在你检查的if条件下  如果($超级管理员){}

表示如果(1){} 然后这种类型的if条件只检查数据是否存在,然后它进入你要返回的if语句体 超级管理员