guenbakku/cake-middleware

CakePHP 中间件集合

安装次数: 85

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:cakephp-plugin

0.1.2 2019-04-23 06:36 UTC

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

确定客户端时区。这将按照以下优先级进行检查

  1. 查询参数(默认:timezone
  2. 请求头(默认: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 语言代码,例如:enja...)。

<?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;
}