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

Joh*_*ong 5 heroku symfony public-key private-key lexikjwtauthbundle

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

Syb*_*bio 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)%'
Run Code Online (Sandbox Code Playgroud)

后 :

lexik_jwt_authentication:
    secret_key: '%env(JWT_SECRET_KEY)%'
    public_key: '%env(JWT_PUBLIC_KEY)%'
Run Code Online (Sandbox Code Playgroud)

我没有找到将完整密钥作为字符串粘贴到 .env 文件中的解决方案,因此我将private_key_pathpublic_key_pathinconfig/dev/lexik_jwt_authentication.yaml用于我的开发环境,并secret_keypublic_keyconfig/prod/lexik_jwt_authentication.yaml, 中用于我的 Heroku 生产。

最后,在 Heroku 上添加环境变量,部署即可完成:

JWT_PUBLIC_KEY

JWT_SECRET_KEY


LBA*_*LBA -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
Run Code Online (Sandbox Code Playgroud)

就我而言,这解析为 /app/var/jwt/ 这样的路径,在该文件夹中我有两个文件 private.pem 和 public.pem。

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

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