Laravel实现登录跳转功能

 更新时间:2021年08月06日 11:02:10   投稿:mrr  
网站管理员登录成功后跳转到网站后台,vip用户登录成功后跳转到vip页面,跳转功能怎么实现的呢,下面小编给大家带来了Laravel实现登录跳转功能,需要的朋友可以参考下

前言

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

例如:网站管理员登录成功后跳转到网站后台,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实现登录跳转功能的文章就介绍到这了,更多相关Laravel登录跳转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHP 实现人民币小写转换成大写的方法及大小写转换函数

    PHP 实现人民币小写转换成大写的方法及大小写转换函数

    这篇文章主要介绍了PHP 实现人民币小写转换成大写的方法,大小写转换函数的使用方法介绍,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-11-11
  • php实现微信和支付宝支付的示例代码

    php实现微信和支付宝支付的示例代码

    这篇文章主要介绍了php实现微信和支付宝支付的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • thinkphp文件引用与分支结构用法实例

    thinkphp文件引用与分支结构用法实例

    这篇文章主要介绍了thinkphp文件引用与分支结构用法,以实例形式演示了css与js文件导入的方法,以及if与switch语句的用法,需要的朋友可以参考下
    2014-11-11
  • Laravel学习教程之model validation的使用示例

    Laravel学习教程之model validation的使用示例

    这篇文章主要给大家介绍了关于Laravel学习教程之model validation使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-10-10
  • php生成二维码

    php生成二维码

    随着科技的发展,二维码无处不在,特别是在智能手机时代二维码更活跃,下面小编通过两种方法给大家介绍利用php生成二维码,需要的朋友可以参考下
    2015-08-08
  • 利用php + Laravel如何实现部署自动化详解

    利用php + Laravel如何实现部署自动化详解

    这篇文章主要给大家介绍了关于利用php + Laravel如何实现部署自动化的相关资料,文中通过示例代码介绍非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • thinkPHP5框架设置404、403等http状态页面的方法

    thinkPHP5框架设置404、403等http状态页面的方法

    这篇文章主要介绍了thinkPHP5框架设置404、403等http状态页面的方法,结合实例形式分析了thinkPHP5框架设置404页面的相关配置、视图显示页面及控制器调用相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • 使用array_map简单搞定PHP删除文件、删除目录

    使用array_map简单搞定PHP删除文件、删除目录

    这篇文章主要介绍了使用array_map简单搞定PHP删除文件、删除目录的相关资料,需要的朋友可以参考下
    2014-10-10
  • PHP生成缩略图实例讲解

    PHP生成缩略图实例讲解

    这篇文章主要介绍了PHP生成缩略图实例讲解,文章列举了实例代码,有正好需要的同学可以借鉴下
    2021-03-03
  • PHP实现给用户发微信消息提醒功能

    PHP实现给用户发微信消息提醒功能

    这篇文章主要为大家介绍了PHP实现给用户发微信消息提醒功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论