ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 简介 中间件 中间件,在匹配路由之后,调取Controller之前执行(5.3下并不是,请查看下面控制器中间件描述 ),所以常用于用户验证、权限验证等 中间件按照功能分为全局执行、路由执行 # 启动文件 `/project_name/app/Http/Kernel.php` # 全局中间件 表示任何HTTP请求,都会执行这些中间件 ~~~ protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, ]; ~~~ 系统会执行: `CheckForMaintenanceMode` ## Laravel 5.3 在Laravel 5.3中,将路由分为了:apiweb因此中间件也分成了两部分 ~~~ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ]; ~~~ web路由 * EncryptCookies 加解密cookie * AddQueuedCookiesToResponse cookie自动添加到header,一般情况下用户不用干预 * StartSession 开启start_session() * ShareErrorsFromSession 从session读取表单提交的历史数据,便于取值old('field_name'),以及读取错误 * VerifyCsrfToken 对每一个POST DELETE PUT请求的页面,都会做Csrf 检查, api路由 # 路由的中间件 只有当路由开启本中间件时,方会调用。比如用户验证、权限验证等操作 ~~~ protected $routeMiddleware = [ 'alias_name' => \App\Http\Middleware\XXXX::class ]; ~~~ 系统默认自带这些 * auth ->Authenticate验证用户登录 * auth.basic ->AuthenticateWithBasicAuth 基本的用户登录验证 大家在登录一些「FTP(网页)、交换机、路由器」页面时,会弹出一个系统的登录框,便是这个 * guest ->RedirectIfAuthenticated 检查访客是否有已经有登录态(如果保存了登录态) ## 路由开启中间件 ~~~ // 检查登录态,否则跳转登录 // auth 为 中间件 Authenticate 的别名 Route::group(['middleware' => 'auth']) ~~~ # 控制器中间件(5.3) 在每个Controller的构造函数中,也可以调用中间件 ~~~ class UserController extends Controller { public function __construct() { $this->middleware(['auth']); } } ~~~