请选择 进入手机版 | 继续访问电脑版

[PHP编程] Laravel实现登录跳转功能

  [复制链接]
查看292 | 回复70 | 2021-9-13 05:10:07 | 显示全部楼层 |阅读模式

前言

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

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

预备 工作

用户表

  1. CREATE TABLE `users` (
  2. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  3. `name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  4. `email` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  5. `role` varchar(40) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal',
  6. `email_verified_at` timestamp NULL DEFAULT NULL,
  7. `password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
  8. `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  9. `created_at` timestamp NULL DEFAULT NULL,
  10. `updated_at` timestamp NULL DEFAULT NULL,
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `users_email_unique` (`email`),
  13. KEY `users_role_index` (`role`)
  14. ) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
复制代码

分别录入体系 管理员、vip用户和平常 用户

在这里插入图片形貌

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

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

  1. //复写redirectPath实现登录跳转
  2. public function redirectPath()
  3. {
  4. switch (auth()->user()->role) {
  5. case 'admin':
  6. return 'admin/dashboard';
  7. case 'vip':
  8. return 'vip/dashboard';
  9. default:
  10. return '/home';
  11. }
  12. }
复制代码

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

  1. php artisan make:middleware Isvip
  2. php artisan make:middleware Isadmin
复制代码

Isvip

  1. public function handle($request, Closure $next)
  2. {
  3. //如果是vip则往下执行逻辑
  4. if(auth()->user()->role === 'vip'){
  5. return $next($request);
  6. }
  7. //不是vip则跳转到首页
  8. return redirect('/home');
  9. }
复制代码

Isadmin

  1. public function handle($request, Closure $next)
  2. {
  3. //如果是管理员则往下执行逻辑
  4. if(auth()->user()->role === 'admin'){
  5. return $next($request);
  6. }
  7. //不是管理员则跳转到首页
  8. return redirect('/home');
  9. }
复制代码

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

  1. protected $routeMiddleware = [
  2. \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
  3. 'admin' => \App\Http\Middleware\Isadmin::class,
  4. 'vip' => \App\Http\Middleware\Isvip::class,
  5. ];
复制代码

路由中加入中央 件举行 访问过滤

  1. //中间件检查访问该目录admin/dashboard是否为admin用户,过滤不合格的用户
  2. Route::get('admin/dashboard', function (){
  3. return view('admin.dashboard');
  4. })->middleware(['auth','admin']);
  5. //中间件检查访问该目录vip/dashboard是否为vip用户,过滤不合格的用户
  6. Route::get('vip/dashboard', function (){
  7. return view('vip.dashboard');
  8. })->middleware(['auth','vip']);
复制代码

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

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

  1. php artisan make:middleware UserRoleRedirect
复制代码

UserRoleRedirect逻辑代码

  1. public function handle($request, Closure $next)
  2. {
  3. switch (auth()->user()->role) {
  4. case 'admin':
  5. return redirect('admin/dashboard');
  6. case 'vip':
  7. return redirect('vip/dashboard');
  8. default:
  9. break;
  10. }
  11. return $next($request);
  12. }
复制代码

路由利用 联合 admin和vip中央 件过滤

  1. Route::get('/home', function () {
  2. return view('welcome');
  3. })->middleware(['auth','auth.redirect']);
  4. Auth::routes();
  5. //中间件检查访问该目录admin/dashboard是否为admin用户,过滤不合格的用户
  6. Route::get('admin/dashboard', function (){
  7. return view('admin.dashboard');
  8. })->middleware(['auth','admin']);
  9. //中间件检查访问该目录vip/dashboard是否为vip用户,过滤不合格的用户
  10. Route::get('vip/dashboard', function (){
  11. return view('vip.dashboard');
  12. })->middleware(['auth','vip']);
复制代码

到此这篇关于Laravel实现登录跳转功能的文章就先容 到这了,更多干系 Laravel登录跳转内容请搜索 脚本之家从前 的文章或继续欣赏 下面的干系 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar fys24680 | 2021-9-18 08:08:49 | 显示全部楼层
admin楼主是男的还是女的?
回复

使用道具 举报

avatar 飞一航符cx | 2021-9-18 08:43:30 | 显示全部楼层
admin楼主,您忘记吃药了吧?
回复

使用道具 举报

avatar 彩云彩2017 | 2021-9-22 07:21:48 | 显示全部楼层
你觉得该怎么做呢?
回复

使用道具 举报

avatar 找食的麻雀粮 | 2021-9-24 18:30:24 | 显示全部楼层
admin楼主病的不轻啊!
回复

使用道具 举报

avatar lj1282502016 | 2021-10-3 05:59:20 | 显示全部楼层
论坛的帖子越来越有深度了!
回复

使用道具 举报

avatar 必须更多木 | 2021-10-3 09:06:59 | 显示全部楼层
好东西,赞一个!
回复

使用道具 举报

avatar jiaguangqin | 2021-10-3 13:44:35 | 显示全部楼层
太高深了,理解力不够用了!
回复

使用道具 举报

avatar 李悔之2015 | 2021-10-11 07:07:48 | 显示全部楼层
admin楼主的头像是本人吗?
回复

使用道具 举报

avatar 小玛哥1 | 2021-10-11 07:07:51 | 显示全部楼层
admin楼主好聪明啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则