在Heroku上使用LexikJWTAuthenticationBundle部署Symfony应用程序

时间:2016-10-20 07:20:31

标签: symfony heroku private-key public-key lexikjwtauthbundle

我将我的应用程序部署到Heroku,然后我添加了一个带有LexikJWTAuthenticationBundle的api进行身份验证。我创建了一个带密码的公钥和私钥,就像文档说的那样,它在我的本地机器上工作得很好,但我不知道如何创建或复制这些文件给Heroku。

2 个答案:

答案 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_pathpublic_key_path保留在config/dev/lexik_jwt_authentication.yaml中,并使用了{{ 1}}和secret_key仅在public_key中用于我的Heroku产品。

要完成此操作,请在Heroku上添加env变量,然后部署:

JWT_PUBLIC_KEY

JWT_SECRET_KEY

答案 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文件。