我将我的应用程序部署到Heroku,然后我添加了一个带有LexikJWTAuthenticationBundle的api进行身份验证。我创建了一个带密码的公钥和私钥,就像文档说的那样,它在我的本地机器上工作得很好,但我不知道如何创建或复制这些文件给Heroku。
答案 0 :(得分:3)
使用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
和public_key_path
保留在config/dev/lexik_jwt_authentication.yaml
中,并使用了{{ 1}}和secret_key
仅在public_key
中用于我的Heroku产品。
要完成此操作,请在Heroku上添加env变量,然后部署:
答案 1 :(得分:-1)
你的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。
你说它在dev中运行,所以你应该有类似的东西。 因此,您只需将标准部署(Symfony和其他)文件的文件夹结构和文件上传/签入/部署到Heroku。你的确切问题是什么?
强烈推荐: 您应该为每个环境设置不同的密钥对,因此在最小设置中,您不应该在config.dev.yml和config_prod.yml中的config.yml中定义lexik_jwt_authentication,而不是两次。并且为dev和prod提供了一组不同的pem文件。