guenbakku / cake-middleware
CakePHP 中间件集合
0.1.2
2019-04-23 06:36 UTC
Requires
- php: >=7.0
- cakephp/cakephp: >=3.5
Requires (Dev)
- phpunit/phpunit: ^5.7|^6.0
This package is auto-updated.
Last update: 2024-09-23 18:37:54 UTC
README
CakePHP 中间件集合。
需求
- PHP 7.0 或更高版本
- CakePHP 3.5 或更高版本
安装
您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。
安装 composer 包的推荐方式是
composer require guenbakku/cake-middleware
中间件列表
Http\ClientTimezoneMiddleware
确定客户端时区。这将按照以下优先级进行检查
- 查询参数(默认:
timezone
) - 请求头(默认:
X-Timezone
)
支持的时区
https://php.ac.cn/manual/en/timezones.php
<?php // In Application.php use Guenbakku\Middleware\Http\ClientTimezoneMiddleware; public function middleware($middlewareQueue) { $middlewareQueue ->add(new ClientTimezoneMiddleware()); // Other middlewares... return $middlewareQueue; }
<?php // In other place in source code use Guenbakku\Middleware\Http\ClientTimezoneMiddleware; $clientTimezone = ClientTimezoneMiddleware::getClientTimezone();
Http\CorsMiddleware
向 API 上的资源添加 Access-Control-Allow-Origin
和其他相关头,使 API 可以通过跨域进行调用。
注意:为了在出现异常时仍然正确工作,应将 CorsMiddleware
插入到中间件队列的第一个位置(在 Cake\Error\Middleware\ErrorHandlerMiddleware
之前)。
<?php // In Application.php use Guenbakku\Middleware\Http\CorsMiddleware; public function middleware($middlewareQueue) { // Use with default settings $middlewareQueue ->add(new CorsMiddleware()); // Other middlewares... // Use with customize settings $middlewareQueue ->add(new CorsMiddleware([ 'allowOrigin' => ['*.domain.com'], 'allowMethods' => ['GET', 'POST'], 'allowHeaders' => ['*'], 'allowCredentials' => true, 'exposeHeaders' => ['Link'], 'maxAge' => 300, ])); // Other middlewares... return $middlewareQueue; }
Http\LocaleSelectorMiddleware
根据 Accept-Language 头设置请求的运行时默认区域设置。如果匹配传递的有效区域设置列表,则将设置默认值。
这是对 \Cake\I18n\Middleware\LocaleSelectorMiddleware
的自定义中间件,但与原始中间件不同,此中间件仅获取区域代码中的前两个字符(ISO 639-1 语言代码,例如:en
、ja
...)。
<?php // In Application.php use Guenbakku\Middleware\Http\LocaleSelectorMiddleware; public function middleware($middlewareQueue) { // Accept all locales $middlewareQueue ->add(new LocaleSelectorMiddleware()); // Other middlewares... // Or specific allowed locales $middlewareQueue ->add(new LocaleSelectorMiddleware(['en', 'ja'])); // Other middlewares... return $middlewareQueue; }