您现在的位置是:群英 > 开发技术 > 编程语言
Laravel是怎么现登录跳转功能的,过程是什么
Admin发表于 2022-09-28 17:57:23474 次浏览
这篇文章主要介绍了title,讲解详细,步骤过程清晰,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。

前言

登录跳转:
不同的用户在登录成功之后跳转到不同的网页当中

例如:网站管理员登录成功后跳转到网站后台,vip用户登录成功后跳转到vip页面

准备工作

用户表

CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `role` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal',
  `email_verified_at` timestamp NULL DEFAULT NULL,
  `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`),
  KEY `users_role_index` (`role`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

分别录入系统管理员、vip用户和普通用户

使用redirectPath和middeware实现安全的登录跳转

1)app\Http\Controllers\Auth\LoginController.php下复写redirectPath方法
判断登录的用户,实现不同的跳转页

//复写redirectPath实现登录跳转
    public function redirectPath()
    {
        switch (auth()->user()->role) {
            case 'admin':
                return 'admin/dashboard';
            case 'vip':
                return 'vip/dashboard';
            default:
                return '/home';
        }
    }

2)创建Isvip和Isadmin中间件过滤越权访问用户

php artisan make:middleware Isvip
php artisan make:middleware Isadmin

Isvip

public function handle($request, Closure $next)
    {
        //如果是vip则往下执行逻辑
        if(auth()->user()->role === 'vip'){
            return $next($request);
        }
        //不是vip则跳转到首页
        return redirect('/home');
    }

Isadmin

public function handle($request, Closure $next)
    {
        //如果是管理员则往下执行逻辑
        if(auth()->user()->role === 'admin'){
            return $next($request);
        }
        //不是管理员则跳转到首页
        return redirect('/home');
    }

app\Http\Kernel.php注册Isadmin和Isvip中间件

protected $routeMiddleware = [
\Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'admin' => \App\Http\Middleware\Isadmin::class,
        'vip' => \App\Http\Middleware\Isvip::class,
    ];

路由中加入中间件进行访问过滤

//中间件检查访问该目录admin/dashboard是否为admin用户,过滤不合格的用户
Route::get('admin/dashboard', function (){
    return view('admin.dashboard');
})->middleware(['auth','admin']);

//中间件检查访问该目录vip/dashboard是否为vip用户,过滤不合格的用户
Route::get('vip/dashboard', function (){
    return view('vip.dashboard');
})->middleware(['auth','vip']);

优化在不使用复写redirectPath方法下实现登录跳转

创建UserRoleRedirect中间件用于不同用户登录跳转不同页面功能实现

php artisan make:middleware UserRoleRedirect

UserRoleRedirect逻辑代码

public function handle($request, Closure $next)
    {
        switch (auth()->user()->role) {
            case 'admin':
                return redirect('admin/dashboard');
            case 'vip':
                return redirect('vip/dashboard');
            default:

                break;
        }

        return $next($request);
    }

路由使用结合admin和vip中间件过滤

Route::get('/home', function () {
    return view('welcome');
})->middleware(['auth','auth.redirect']);

Auth::routes();

//中间件检查访问该目录admin/dashboard是否为admin用户,过滤不合格的用户
Route::get('admin/dashboard', function (){
    return view('admin.dashboard');
})->middleware(['auth','admin']);

//中间件检查访问该目录vip/dashboard是否为vip用户,过滤不合格的用户
Route::get('vip/dashboard', function (){
    return view('vip.dashboard');
})->middleware(['auth','vip']);



以上就是关于“Laravel是怎么现登录跳转功能的,过程是什么”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-07-14 17:48:49 
摘要:两种方法:1、用strlen()获取子串的长度(字符个数),再用substr()从字符串头部开始删除指定个数的字符即可,语法“substr(字符串,strlen(指定子串))”。2、用preg_replace()和preg_quote()函数将开头子串替换为空字符即可,语法“preg_replace('/^'.preg_quote(指定子串,'/').'/','',字符串)”。
2022-06-06 17:09:01 
摘要:go语言主要是用作服务器端开发,其定位是用来开发大型软件的,且开发周期长、支持云计算的网络服务。go语言融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。
2022-06-22 17:47:15 
摘要:本篇文章带大家了解一下Node.js中的Buffer,并聊聊浏览器的事件循环,希望对大家有所帮助!
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部