jc-it/yii2-secrets

Yii2 的密钥存储和提取工具

v1.0.0 2022-01-13 11:27 UTC

This package is auto-updated.

Last update: 2024-09-13 17:35:37 UTC


README

codecov Continous integration Packagist Total Downloads Packagist Monthly Downloads GitHub tag (latest by date) Packagist Version

此扩展为 Yii2 提供密钥存储和提取功能。

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

$ composer require jc-it/yii2-secrets

或将以下内容添加到您的 composer.json 文件的 require 部分:

"jc-it/yii2-secrets": "^<latest version>"

配置

密钥

建议只在应用加载之前在配置文件中使用此包,这样它们就不会在崩溃或意外情况下被您的应用程序丢弃。

$secrets = new \JCIT\secrets\SecretsService(
    new \JCIT\secrets\storages\Chained(
        new \JCIT\secrets\storages\Cache(getenv()),
        new \JCIT\secrets\storages\Json('/run/env.json'),
        new \JCIT\secrets\storages\Filesystem(__DIR__ . '/secrets'),
    )
);

请注意,在 Chained 存储中的顺序很重要,找到的第一个密钥值将被返回。

密钥提取

在部署新环境时,找出所有需要配置的密钥可能会很麻烦。此包包含一个控制台命令,可以提取密钥使用情况。

  • 在控制台控制器中创建一个动作
      class SecretsController extends Controller
      {
          public function actions(): array
          {
              return [
                  'extract' => [
                      'class' => Extract::class,
                      'calls' => ['$secrets->get', '$secrets->getAndThrowOnNull'],
                      'sourcePath' => '@app/',
                  ],
              ];
          }
      }
  • 在依赖注入中添加存储(仅用于提取命令)
    ...
    'container' => [
        'definitions' => [
            \JCIT\secrets\interfaces\StorageInterface::class => function() {
                return new \JCIT\secrets\storages\Filesystem(__DIR__ . '/../../../secrets')
            }
        ]
    ],

致谢