laravel中间件Middleware原理解析及实例
laravel中间件Middleware原理解析及实例
打赏
一、总结
一句话总结:
二、laravel中间件Middleware原理解析
1、身份中间件 实例
legend3/app/Http/Middleware/Home/User.php
这是写的中间件的代码,逻辑就是判断用户是否登录,没登录就退出
1 <?php 2 3 namespace App\Http\Middleware\Home; 4 5 use Closure; 6 use Auth; 7 8 class User 9 { 10 /** 11 * Handle an incoming request. 12 * 13 * @param \Illuminate\Http\Request $request 14 * @param \Closure $next 15 * @return mixed 16 */ 17 public function handle($request, Closure $next) 18 { 19 //前端的登录中间件 20 //作用是用Auth::guard('user')->check()来验证用户登录, 21 //如果登录成功就进行下一步 22 //如果没有登录成功就返回到登录页 23 if(!Auth::guard('user')->check()){ 24 return redirect('/login'); 25 } 26 return $next($request); 27 } 28 }
legend3/app/Http/Kernel.php
这里是注册中间件,相当于给中间件取别名,使用的时候可以直接通过别名调用
1 protected $routeMiddleware = [ 2 //fry 3 //后端的登录中间件注册 4 'admin.auth'=>Middleware\Admin\Admin::class, 5 //前端的登录中间件注册 6 'home.auth'=>Middleware\Home\User::class, 7 8 // 9 10 'auth' => \App\Http\Middleware\Authenticate::class, 11 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 12 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 13 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 14 'can' => \Illuminate\Auth\Middleware\Authorize::class, 15 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 16 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 17 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 18 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 19 ];
在配置文件auth中注册guard
如果使用Auth::guard('user')->check()
中的guard,就需要注册guard
如果只是作为普通中间件使用,不使用guard,就不需要
例如$this->middleware('home.auth')->except(['index','get_video_comment']);
使用
在各个控制器中
class VideoController extends Controller { public function __construct() { //排除'index'方法,进行中间件的验证 $this->middleware('home.auth')->except(['index','get_video_comment']); // $this->middleware('home.auth')->except(['get_video_comment']); } 省略若干代码... }
如果没有登录,就会被被中间件拦截,跳转到登录页面
2、pjax中间件 实例
注册
中间件代码及位置
pjax中间件代码中的逻辑也非常简单,如果不是pjax请求或者是重定向,就不处理这个请求
否则就处理这个请求
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2025-01-31:宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2020-09-26 Python库-re(正则表达式)
2020-09-26 Python正则表达式指南
2020-09-26 python字符串前面加上'r'的作用
2020-09-26 MinMaxScaler
2020-09-26 Python正则表多行匹配
2019-09-26 hdjs---laravel 框架使用hdjs 实现多图上传功能
2019-09-26 jQuery.extend 函数使用详解