【笔记整理】laravel HTTP中间件的介绍及创建

发布时间 - 2021-09-13 00:00:00    点击率:

下面是我看的视频整理的笔记,供大家参考。以下是一些基础知识,如果对基础知识不熟悉的可以看看。我上一遍文章分享的是composer安装laravel,想看更多文章,关注我,希望能给大家提供帮助。

中间件其实就是在路由上面加了一层过滤或是一层保护,前缀和命名空间都是作为group的数组参数传进去的,中间件也是作为group的数组参数传进去

一、中间件书写

添加中间件前

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

添加web中间件后

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

web中间件可以用session功能,启用CSRF保护

Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});

再设置一个路由,用来输出session

Route::get('/test',function(){
echo session('key');
return 'test';
});

但因为不在一个中间件里,所以取不出session的值

下面我们设置一下把路由放到一个分组的中间件

Route::group(['middleware'=>['web']], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

系统默认的web中间件,中间件在Kernel.php中

使用web中间件时,才会使用session

二、自己手动在Kernel.php文件中定义一个后台管理云登录的中间件

定义前:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];

定义后:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
 'admin.login' => \App\Http\Middleware\AdminLogin::class,
    ];

在cmd窗口切换到项目目录可以用命令创建中间件

php artisan make:middleware AdminLogin

然后在Middleware文件夹查看AdminLogin.php文件

然后调用刚才创建的中间件

Route::group(['middleware'=>['web','admin.login'],], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

三、后台超级管理员的验证

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () {
Rount::get('login','IndexController@login');//登录不需要后台管理员的超级认证
});
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () {
Rount::get('index','IndexController@index');//超级管理员需要认证后才能进入欢迎页面和编辑页面
Rount::resource('article','ArticleController');
});

任何一个用户都可以登录,但是如果登录了成功,就进入欢迎页面,没有登录成功就在登录页面,因为登录的信息存到session里,所以我们利用session的信息判断是否登录

模拟登录是将登录信息写到session里面,然后找到Admin包下IndexController控制器

1]); //登录信息用admin存储
     return '

登录

' } }

我们在中间件里输出session测试一下

然后在Middleware文件夹查看AdminLogin.php文件

验证:

我们先登录一下,然后访问欢迎页面,如果输出1,表示我们设置成功了(登录时把1存到session里,然后进入欢迎页面,欢迎页面会调用中间件的AdminLogin.php,),

我们继续设置

Middleware文件夹的AdminLogin.php文件

以上步骤是我学习的笔记,我把要操作的步骤或重点的记了下来,如果哪有不懂可以留言。谢谢大家支持。希望能为大家提供帮助,如果想看更多信息,关注我,下一篇继续分享。


# laravel  # 可以用  # 想看  # 的是  # 都是  # 就在  # 我看  # 不出  # 不需要  # 才会  # 不懂 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  JavaScript实现Fly Bird小游戏  如何批量查询域名的建站时间记录?  如何解决hover在ie6中的兼容性问题  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何快速搭建支持数据库操作的智能建站平台?  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Python制作简易注册登录系统  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  浅析上传头像示例及其注意事项  如何在不使用负向后查找的情况下匹配特定条件前的换行符  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  如何快速打造个性化非模板自助建站?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何用西部建站助手快速创建专业网站?  晋江文学城电脑版官网 晋江文学城网页版直接进入  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  如何快速建站并高效导出源代码?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  Swift开发中switch语句值绑定模式  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  音响网站制作视频教程,隆霸音响官方网站?  Laravel观察者模式如何使用_Laravel Model Observer配置  昵图网官方站入口 昵图网素材图库官网入口  如何在阿里云高效完成企业建站全流程?  lovemo网页版地址 lovemo官网手机登录  使用C语言编写圣诞表白程序  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Python3.6正式版新特性预览  如何快速上传自定义模板至建站之星?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel怎么在Blade中安全地输出原始HTML内容  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何用狗爹虚拟主机快速搭建网站?  如何在腾讯云服务器快速搭建个人网站?  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  微信小程序 scroll-view组件实现列表页实例代码  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  如何在橙子建站上传落地页?操作指南详解  大连 网站制作,大连天途有线官网?  EditPlus中的正则表达式实战(6)  Laravel怎么在Controller之外的地方验证数据  音乐网站服务器如何优化API响应速度?  如何用搬瓦工VPS快速搭建个人网站?  微信小程序 input输入框控件详解及实例(多种示例)