为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕标5832272 2021-12-24 09:14:14
我的 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页面回答问题。
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

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


查看完整回答
反对 回复 2021-12-24
?
万千封印

TA贡献1891条经验 获得超3个赞

重定向由 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


干杯!


查看完整回答
反对 回复 2021-12-24
  • 2 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信