有什么方法可以访问用户空间代码中的 Symfony 秘密值吗?

Is there any way to access a Symfony secret value in userland code?

尽管使它们看起来像是环境变量,但 Symfony 实际上并未将机密加载到环境中,因此您无法通过 getenv() 或 $_ENV 访问它们。除了通过 DI 之外,还有什么方法可以访问它们吗?我正在尝试将秘密名称作为实体 属性 存储在数据库中,然后让服务 class 为 API 客户端请求的任何实体读取适当的秘密值.

您可以像那样将环境值添加到 config/services.yaml 中的参数(您甚至可以将它们设为布尔值、JSON 或其他):

parameters:
    your_secret: '%env(YOUR_SECRET)%'
    your_bool: '%env(bool:YOUR_BOOL)%'
    your_json: '%env(json:YOUR_JSON)%'

例如,您可以像这样从控制器中检索它:

    $yourSecret = $this->getParameter('your_secret');

在生产中,secrets:decrypt-to-local 是 recommended for performance reasons。这会创建 .env.prod.local 并且这些秘密随后会在 $_ENV.

中可用

部署时,我使用:

php bin/console secrets:decrypt-to-local --force --env=prod

在本地,我没有使用开发机密,而是将值保存在 .env.local