laravel使用middleware中间件做路由保护
概述
在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
二、自定义中间件
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方法中添加相关逻辑即可。
写到最后
由于自己第一次写博客,有诸多不知处,希望各位能够指出,大家一起加油。
上一篇: Nginx错误配置导致的漏洞学习