我将我的应用程序部署到 Heroku,然后我添加了一个带有 LexikJWTAuthenticationBundle 的 api 用于身份验证。我使用文档中所说的密码创建了公钥和私钥,它在我的本地机器上运行良好,但我不知道如何创建这些文件或将这些文件复制到 Heroku。
2 回答
使用 LexikJWTAuthenticationBundle v2.5.0,现在可以将密钥作为环境变量提供:commit 154c60e90b8f10e1fdca819a681b5f189e8ed9ef。
替换 lexik_jwt_authentication.yaml 中字符串键的键路径:
前 :
lexik_jwt_authentication:
private_key_path: '%kernel.project_dir%/%env(JWT_PRIVATE_KEY_PATH)%'
public_key_path: '%kernel.project_dir%/%env(JWT_PUBLIC_KEY_PATH)%'
后 :
lexik_jwt_authentication:
secret_key: '%env(JWT_SECRET_KEY)%'
public_key: '%env(JWT_PUBLIC_KEY)%'
我没有找到将完整密钥作为字符串粘贴到 .env 文件中的解决方案,因此我将private_key_path
and保留public_key_path
在config/dev/lexik_jwt_authentication.yaml
我的开发环境中,并且仅在我的 Heroku 生产中使用secret_key
并且public_key
仅在 中config/prod/lexik_jwt_authentication.yaml
。
最后,在 Heroku 上添加环境变量,部署,你就完成了:
您的 config.yml 中可能有类似的内容:
lexik_jwt_authentication:
private_key_path: '%kernel.root_dir%/var/jwt/private.pem'
public_key_path: '%kernel.root_dir%/var/jwt/public.pem'
pass_phrase: 'somepassphrase'
token_ttl: 2592000
在我的情况下,这会解析为 /app/var/jwt/ 之类的路径,并且在该文件夹中,我有两个文件 private.pem 和 public.pem。
你说它在开发中运行,所以你应该有类似的东西。因此,您只需要将文件夹结构和文件与您的标准部署(Symfony 和其他)文件一起上传/签入/部署到 Heroku。你的确切问题是什么?
强烈建议: 您应该为每个环境设置不同的密钥对,因此在最小设置中,您不应该在 config.yml 中定义 lexik_jwt_authentication 而不是在 config_dev.yml 和 config_prod.yml 中定义两次,并且有一个dev 和 prod 的不同 pem 文件集。