5

我将我的应用程序部署到 Heroku,然后我添加了一个带有 LexikJWTAuthenticationBundle 的 api 用于身份验证。我使用文档中所说的密码创建了公钥和私钥,它在我的本地机器上运行良好,但我不知道如何创建这些文件或将这些文件复制到 Heroku。

4

2 回答 2

5

使用 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_pathand保留public_key_pathconfig/dev/lexik_jwt_authentication.yaml我的开发环境中,并且仅在我的 Heroku 生产中使用secret_key并且public_key仅在 中config/prod/lexik_jwt_authentication.yaml

最后,在 Heroku 上添加环境变量,部署,你就完成了:

JWT_PUBLIC_KEY

JWT_SECRET_KEY

于 2018-06-30T08:40:12.590 回答
-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。

你说它在开发中运行,所以你应该有类似的东西。因此,您只需要将文件夹结构和文件与您的标准部署(Symfony 和其他)文件一起上传/签入/部署到 Heroku。你的确切问题是什么?

强烈建议: 您应该为每个环境设置不同的密钥对,因此在最小设置中,您不应该在 config.yml 中定义 lexik_jwt_authentication 而不是在 config_dev.yml 和 config_prod.yml 中定义两次,并且有一个dev 和 prod 的不同 pem 文件集。

于 2016-10-20T09:51:06.537 回答