了解 Laravel 中间件:深入探讨 Laravel #s 新方法
“纵有疾风来,人生不言弃”,这句话送给正在学习文章的朋友们,也希望在阅读本文《了解 Laravel 中间件:深入探讨 Laravel #s 新方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新文章相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!
laravel 中间件简介
中间件是现代 web 开发中的一个基本概念,laravel 这个流行的 php 框架广泛使用它来处理 http 请求。无论您是构建简单的 api 还是大型 web 应用程序,了解 laravel 中的中间件都是编写更清晰、更易于管理且高效的代码的关键。
在本文中,我们将深入探讨 laravel 中间件,解释它是什么、为什么应该使用它以及如何有效地使用它。我们还将了解 laravel 11 中的中间件结构,其中发生了重大变化,包括删除了 http 内核。最后,我们将逐步介绍 laravel 中自定义中间件的创建和使用。
目录
- 什么是中间件?
- 为什么使用中间件?
- laravel 中的中间件类型
- 中间件的好处
- laravel 11 中的中间件结构
- 如何创建和使用自定义中间件
- 使用中间件的实际示例
- laravel 中间件的最佳实践
- 结论
1.什么是中间件?
中间件本质上是位于传入 http 请求和应用程序之间的过滤器或层。它拦截传入的请求,并在将请求传递到下一层之前执行各种任务,例如身份验证、日志记录和请求修改。处理后,中间件可以允许请求继续发送到应用程序、修改响应或直接拒绝请求。
简单来说,中间件就像应用程序的安全门或守卫。对应用程序的每个请求都必须通过中间件,并且您可以根据请求的类型定义不同的行为。
2. 为什么使用中间件?
中间件提供了一种方便的机制来过滤或修改进入应用程序的 http 请求。以下是 laravel 应用程序中使用中间件的一些常见原因:
身份验证和授权:中间件可以确保只有经过身份验证的用户或具有特定权限的用户才能访问某些路由。
维护模式:中间件可以检查应用程序是否处于维护模式,并为所有传入请求返回维护消息。
日志记录和监控:中间件可以记录每个请求或监控性能,帮助开发人员跟踪应用程序性能。
cors(跨源资源共享):中间件可以处理 cors 标头,允许或拒绝来自外部源的请求。
请求修改:您可能希望在请求数据到达控制器之前对其进行修改,例如修剪输入字符串或清理输入。
通过使用中间件,您可以保持应用程序逻辑干净,并与横切关注点(例如安全性、日志记录或请求修改)分开。
3. laravel 中的中间件类型
在 laravel 中,中间件一般可以分为三种类型:
全局中间件
全局中间件适用于进入应用程序的每个 http 请求。它定义一次并自动应用于所有路由。例如,您可能希望为向应用程序发出的每个请求启用日志记录。
特定于路由的中间件
这种类型的中间件仅应用于特定的路由或路由组。您可以将其附加到单个路由或具有相似行为的一组路由。例如,您可以仅将身份验证中间件应用于需要登录用户的路由。
中间件组
中间件组允许您定义可以作为一个组一起应用的多个中间件。 laravel 附带了一些默认的中间件组,例如 web 和 api 组。这些组捆绑了应分别应用于所有 web 或 api 请求的中间件。
4. 中间件的好处
中间件为 laravel 开发人员提供了多项好处:
1。关注点分离
中间件通过将特定逻辑与主应用程序流程隔离来帮助分离关注点。这使得维护和扩展应用程序变得更加容易,因为应用程序的职责被分为不同的层。
2。可重复使用性
一旦定义,中间件就可以在多个路由和应用程序中重复使用。这确保您只需编写一次中间件逻辑并在必要时应用它。
3。安全
中间件允许您在应用程序的入口点实现与安全相关的逻辑,例如身份验证和授权,确保未经授权的请求永远不会到达您的核心逻辑。
4。定制
laravel 中间件非常灵活且可定制。您可以创建中间件来修改请求、根据特定条件重定向用户或在响应返回到客户端之前对其进行操作。
5。集中错误处理
中间件允许您以集中的方式管理错误和异常。您可以捕获异常或验证错误并在您的应用程序中统一处理它们。
5. laravel 11 中的中间件结构
laravel 11 发生了一些重要的结构变化,特别是在中间件的处理方式方面。在 laravel 11 之前,所有中间件配置都在 http kernel 文件 (app/http/kernel.php) 中处理。然而,laravel 11 引入了一种更干净、更模块化的方法。
http 内核的移除
在 laravel 11 中,http 内核已被删除,中间件现在在 bootstrap/app.php 文件中配置。对于熟悉传统 http 内核结构的开发人员来说,这可能感觉像是一个重大的范式转变,但它允许以更简化、更灵活的方式来注册和管理中间件。
这是 laravel 11 中默认 bootstrap/app.php 文件的样子:
withProviders() ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', ) ->withMiddleware(function (Middleware $middleware) { // }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); ?>``` **Middleware Management** In Laravel 11, middleware is now handled through the withMiddleware() method, which accepts a callable function. Inside this callable, you can register, modify, or remove middleware. ## 6. How to Create and Use Custom Middleware in Laravel Creating custom middleware in Laravel allows you to extend the default behavior of your application. Here’s how to create and use custom middleware in Laravel: Step 1: Create the Middleware You can create middleware using the Artisan command: php artisan make:middleware CheckAge This command will create a new middleware class in the app/Http/Middleware directory. The newly created CheckAge.php file will look something like this: ```php age <= 18) { return redirect('home'); } return $next($request); } }?>``` In this example, the CheckAge middleware checks the user's age and redirects them if they are under 18. If the user passes the condition, the request continues to the next layer. **Step 2: Register the Middleware** Since Laravel 11 no longer uses the Http Kernel, you will need to register your middleware in the bootstrap/app.php file. Here’s how you can register your custom middleware: ```php return Application::configure() ->withProviders() ->withRouting( web: __DIR__.'/../routes/web.php', ) ->withMiddleware(function (Middleware $middleware) { $middleware->alias('check.age', \App\Http\Middleware\CheckAge::class); }) ->create();``` Now, your middleware alias check.age is available for use in your routes. Step 3: Apply the Middleware to Routes Once the middleware is registered, you can apply it to routes or route groups: ```php 18 })->middleware('check.age');?>``` ## 7. Practical Examples of Using Middleware Middleware can be used for a variety of tasks in Laravel. Let’s look at a few practical use cases. **Example 1: Logging Requests** You can create middleware to log incoming requests to a file or a logging service. This can help you monitor the behavior of your application. ```php url()); return $next($request); } }?>``` **Example 2: Checking User Roles** You can use middleware to restrict access based on user roles. For example, only allow access to certain routes if the user has an admin role. ```php role != 'admin') { return redirect('/home'); } return $next($request); } }?>``` ## 8. Best Practices for Middleware in Laravel Here are some best practices to follow when working with middleware in Laravel: **1. Keep Middleware Focused** Middleware should be responsible for a single task. If you find that your middleware is doing too much, consider splitting it into smaller, more focused middleware. **2. Use Route-Specific Middleware** Use route-specific middleware when possible. Applying middleware globally can lead to performance overhead and unnecessary checks on routes that don’t need them. **3. Avoid Complex Logic** Middleware should be kept simple. Complex logic or business rules should be handled in the controller
以上就是《了解 Laravel 中间件:深入探讨 Laravel #s 新方法》的详细内容,更多关于的资料请关注golang学习网公众号!

- 上一篇
- 如何将函数用作 Java 中的回调?

- 下一篇
- 博客#he CyberFriend 的开始
-
- 文章 · php教程 | 5分钟前 |
- PHP实时通信应用的实现与应用解析
- 315浏览 收藏
-
- 文章 · php教程 | 21分钟前 | php Laravel JSON HTTP方法 RESTfulAPI
- PHP实现RESTfulAPI终极攻略
- 445浏览 收藏
-
- 文章 · php教程 | 23分钟前 | php JavaScript 前端开发 性能问题 服务器端渲染
- PHP能在前端用吗?前端开发中PHP的可行性分析
- 100浏览 收藏
-
- 文章 · php教程 | 29分钟前 | Composer webonyx/graphql-php Schema GraphQLAPI 查询请求
- PHP中轻松实现GraphQL的方法
- 201浏览 收藏
-
- 文章 · php教程 | 33分钟前 |
- PHP枚举标志巧妙组合技巧
- 455浏览 收藏
-
- 文章 · php教程 | 35分钟前 |
- PHP验证SWIFT码的正确方法及代码示例
- 189浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 484次学习
-
- AI Make Song
- AI Make Song是一款革命性的AI音乐生成平台,提供文本和歌词转音乐的双模式输入,支持多语言及商业友好版权体系。无论你是音乐爱好者、内容创作者还是广告从业者,都能在这里实现“用文字创造音乐”的梦想。平台已生成超百万首原创音乐,覆盖全球20个国家,用户满意度高达95%。
- 17次使用
-
- SongGenerator
- 探索SongGenerator.io,零门槛、全免费的AI音乐生成器。无需注册,通过简单文本输入即可生成多风格音乐,适用于内容创作者、音乐爱好者和教育工作者。日均生成量超10万次,全球50国家用户信赖。
- 13次使用
-
- BeArt AI换脸
- 探索BeArt AI换脸工具,免费在线使用,无需下载软件,即可对照片、视频和GIF进行高质量换脸。体验快速、流畅、无水印的换脸效果,适用于娱乐创作、影视制作、广告营销等多种场景。
- 13次使用
-
- 协启动
- SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
- 16次使用
-
- Brev AI
- 探索Brev AI,一个无需注册即可免费使用的AI音乐创作平台,提供多功能工具如音乐生成、去人声、歌词创作等,适用于内容创作、商业配乐和个人创作,满足您的音乐需求。
- 18次使用
-
- PHP技术的高薪回报与发展前景
- 2023-10-08 501浏览
-
- 基于 PHP 的商场优惠券系统开发中的常见问题解决方案
- 2023-10-05 501浏览
-
- 如何使用PHP开发简单的在线支付功能
- 2023-09-27 501浏览
-
- PHP消息队列开发指南:实现分布式缓存刷新器
- 2023-09-30 501浏览
-
- 如何在PHP微服务中实现分布式任务分配和调度
- 2023-10-04 501浏览