欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

laravel使用middleware中间件做路由保护

程序员文章站 2022-07-15 14:11:36
...

概述

在laravel中默认定义了auth中间件,auth中间件可以实现禁止未登录用户访问后台页面。用户也可以根据自己的需求来自定义中间件。本文将会对auth中间件的使用和中间件的自定义进行阐述。

一、auth中间件的使用

1. 在路由文件中引用auth中间件

打开路由文件web.php,中间件的使用方法为路由->middleware(中间件名称)。

Route::get('index/index','Admin\aaa@qq.com')-> middleware('auth');
//其中index/index为禁止用户直接访问的页面的路由

如果在登陆身份验证时使用Auth::guard,则需要将路由修改为

Route::get('index/index','Admin\aaa@qq.com')-> middleware('auth:admin');
//其中index/index为禁止用户直接访问的页面的路由,admin为你自己定义的guard实例名。
2.添加login别名

由于在跳转的时候系统默认使用login路由别名,如果没有,则会报**Route [login] not defined.**错误,如图1。因此需要给登录页面添加“login”别名,对web.php中的登录页面的路由作以下修改。

Route::get('public/login','Admin\aaa@qq.com')->name('login');//name为别名,底层定义的为login

laravel使用middleware中间件做路由保护

二、自定义中间件

1.创建中间件

在laravel项目下打开命令行,运行创建命令:php artisan make:AdminLoginMiddleware,会在app/Http/Middleware文件夹下生成AdminLoginMiddleware的中间件文件。

2.绑定中间件

打开app/Http/Kernel.php文件,在文件中引入新建的中间件的方法:use App\Http\Middleware\AdminLoginMiddleware;在$routeMiddleware中添加 ‘AdminLogin’ => \App\Http\Middleware\AdminLoginMiddleware::class,其中AdminLogin为自己命名的中间件引用。

3.编写中间件的handle方法

打开AdminLoginMiddleware.php文件,修改handle方法。

public function handle($request, Closure $next) {
       if(!Auth::guard('admin')->check()){
            return redirect('/admin/public/login');// /admin/public/login为登录界面路由
        }
        return $next($request);
    }

该中间件实现了auth中间件禁止未登录用户访问后台页面的功能,如果要实现其他功能,只需要在handle方法中添加相关逻辑即可。

写到最后

由于自己第一次写博客,有诸多不知处,希望各位能够指出,大家一起加油。