如何在 Laravel 登录时将特定用户重定向到问答页面

我的 Laravel 项目中有两个用户。1) group_id 1 的超级用户 2) group_id 2 的普通用户 当超级用户第一次登录时,他必须被重定向到一个特定的页面(SuperUserLogs),在那里他会被问到关于他的姓名、员工 ID 和工单的 3 个问题数字。在提交答案之前,他无法访问其他页面。提交后,他将被重定向到主页。而普通用户登录时将被重定向到主页。


我已经创建了一个中间件名称 superuser.php。当用户登录成功时,它告诉我用户是超级用户还是普通用户。


在我的中间件超级用户中


class SuperUser

{

    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @return mixed

     */

    public function handle($request, Closure $next)

    {

        //Super User user_group_id is 1

        if(Auth::user()->user_group_id==1)

        {


            //redirect to some SuperUserLogs to answer questions


            return redirect('/SuperUser/superuserlogs');


        }


        return $next($request);


    }


}

当我以超级用户身份登录时。它给了我以下错误。此页面无效 127.0.0.1 将您重定向了太多次。


SuperUser登录时,必须跳转到SuperUserLog页面回答问题。


慕标5832272
浏览 189回答 2
2回答

MMTTMM

重定向也是一个请求,然后会一次又一次地重定向。仅当您遵循的路线还不是“/SuperUser/superuserlogs”时才重定向。

万千封印

重定向由 LoginController.php 文件进行。在此文件中,您可以找到一个属性:protected $redirectTo = '/home';有建议删除此属性并添加如下方法:public function redirectTo(){    //}因此,您可以定义一个逻辑来处理具有不同角色的用户到不同路径:public function redirectTo(){    // User role    $role = Auth::user()->role->name;     // Check user role    switch ($role) {        case 'Manager':                return '/dashboard';            break;        case 'Employee':               return '/projects';            break;         default:                return '/login';             break;    }}确保在 LoginController.php 中包含类 Illuminate\Support\Facades\Auth。可以看到,作者给我们展示了一个switch语句,检查用户角色并执行指定用户角色的部分。在此处查看更多详细信息:https://codeburst.io/learn-how-to-redirect-authenticated-users-to-corresponding-path-in-laravel-dd613e2f9e3干杯!
打开App,查看更多内容
随时随地看视频慕课网APP