ikkez/f3-middleware

PHP Fat-Free Framework 的中间件路由插件

v1.1.3 2019-03-11 09:09 UTC

This package is auto-updated.

Last update: 2024-09-12 03:56:16 UTC


README

Middleware

中间件路由

这是一个针对 PHP Fat-Free-Framework,版本 3.x 的中间件路由器

它基于 F3 核心路由器,可以在主路由周期之前或之后独立调用。如果您想钩入其他路由组并想在处理主路由处理程序之前做些事情,这可能很有用。

安装

  • 方法 1: 使用 composer composer require ikkez/f3-middleware

  • 方法 2: 将 middleware.php 文件复制到您的 F3 lib/ 目录或其他已知于 AUTOLOADER 的目录

使用示例

$f3 = require('lib/base.php');

// imagine you have some admin routes
$f3->route('GET|POST /admin','Controller\Admin->login');
// and these actions should be protected
$f3->route('GET|POST /admin/@action','Controller\Admin->@action');
$f3->route('GET|POST /admin/@action/@type','Controller\Admin->@action');
$f3->route('PUT /admin/upload','Controller\Files->upload');

// so just add a global pre-route to all at once
\Middleware::instance()->before('GET|POST /admin/*', function(\Base $f3, $params, $alias) {
	// do auth checks
});

\Middleware::instance()->run();
$f3->run();

当然,您也可以在控制器中使用 beforerouteafterroute 事件来添加此身份验证检查功能。但如果您的控制器结构尚未准备好便于实现,或者您有希望严格从控制器中分离出来的东西,例如设置,这里的中间件路由器将帮助您。

// enable the CORS settings only for your API routes:
\Middleware::instance()->before('GET|HEAD|POST|PUT|OPTIONS /api/*', function(\Base $f3) {
	$f3->set('CORS.origin','*');
});

您还可以在其他事件上创建额外的中间件包装器

$mw = \Middleware::instance();
$mw->on('limit',['GET @v1: /api/v1/*','GET @v2: /api/v2/*'], function($f3,$args,$alias) {
	// do api usage limit checks
	return false;
});

if ($mw->run('limit')) {
	// all good, continue
}else{
	// API limit reached
}

注意

尽管您可能可以将中间件路由器作为完全独立的路由器使用,但它并不是框架集成路由器的完全替代品。中间件路由器不包含路由缓存处理、头部管理或自动 CORS 支持,因此请将其用作设置、检查和主路由周期前后工作负载的附加组件。

许可证

您可以在 GNU 通用公共许可证版本 3 或更高版本的前提下使用此插件。

版权 (C) 2019 Christian Knuth (ikkez)