Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 播放框架部署失败:“;尚未设置应用程序机密,我们处于prod模式。您的应用程序不安全”;_Java_Heroku_Playframework - Fatal编程技术网

Java 播放框架部署失败:“;尚未设置应用程序机密,我们处于prod模式。您的应用程序不安全”;

Java 播放框架部署失败:“;尚未设置应用程序机密,我们处于prod模式。您的应用程序不安全”;,java,heroku,playframework,Java,Heroku,Playframework,我正在Heroku上部署一个使用Play框架开发的web应用程序。 部署无法返回此错误: [error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. “我们处于生产模式”是什么意思?在哪里设置模式?我必须改变这一点,因为这不是一个生产环境 谢谢把这个放到你的conf/applicati

我正在Heroku上部署一个使用Play框架开发的web应用程序。 部署无法返回此错误:

[error] p.a.l.c.CryptoConfigParser - The application secret has not been set, and we are in prod mode. Your application is not secure. 
“我们处于生产模式”是什么意思?在哪里设置模式?我必须改变这一点,因为这不是一个生产环境


谢谢

把这个放到你的conf/application.conf中

播放2.5

play.crypto.secret="changethissosomethingsecret"
播放2.6+

play.http.secret.key="changethissosomethingsecret"

在生产模式下运行应用程序之前,需要生成应用程序机密

您需要在生产模式下使用activator PlayGenerateCret为应用程序生成令牌


您需要根据应用程序使用的播放版本设置不同的键

你用的是什么版本的剧本? 查看项目的
plugins.sbt
内的
com.typesafe.play:sbt plugin
版本,或者如果您有与GNU兼容的shell,请执行以下命令:

find . -name "plugins.sbt" -exec grep -PHin --color=always 'com.typesafe.play.*sbt-plugin.*%\s*"\K.*?(?=")' {} \;
了解应用程序使用的play版本号后,继续下一步


基于播放版本的application.conf中使用的密钥是什么? :
application.secret
(默认为
changeme

play.crypto.secret
(默认为
changeme

play.crypto.secret
(默认为
changeme

play.http.secret.key
(默认为
changeme

正如你所看到的,这是不一致的,但一致的是:

  • 在上述版本中,您可以使用
    APPLICATION\u secret
    环境变量/属性覆盖机密(因此,类似于
    APPLICATION\u secret=“changed”sbt“runProd 9001”
  • 每种情况下的默认值都是
    changeme

  • 接下来的两个选项在Play
    v2.6.x
    上进行了测试,但根据文档,应该使用与
    v2.4.x
    v2.5.x
    相同的命令。 唯一的例外是
    v2.3.x
    ,它分别使用
    play generate secret
    play update secret

    如何让sbt为我生成密钥? 从play应用程序的目录中运行以下命令(使用sbt v1.1.6和play v2.6.x测试):

    您可以手动复制以上内容作为密钥的值(基于前面提到的play framework版本),也可以使用下面的建议

    如何让sbt自动更新
    application.conf
    中的现有密钥? 与上面相同,从play framework应用程序的根目录运行以下命令:

    $ sbt playUpdateSecret | grep -i "secret"
    [info] Generated new secret: Kz?fHm_I[wt^Onp[@cr<:`ttrQi]KMsdDs>22hEF?RhkoanQ7gA6NAjL33EV2^Xt
    [info] Updating application secret in /Users/blah/someplayapp/conf/application.conf
    [warn] Did not find application secret in /Users/blah/someplayapp/conf/application.conf
    [warn] Adding application secret to start of file
    

    如您所见,如果您使用
    playdupdatesecret
    生成一个新密码,那么它将无效,因为它被
    production.conf
    中指定的密码覆盖

    您需要在conf文件中添加应用程序机密

    play.http.secret.key=“changethissosomthingsecret”


    可能的重复即使这不是您的生产环境,您仍然希望在Heroku上以生产模式运行应用程序。请参阅此-现在已弃用。Play建议使用Play.http.secret.key=“changethissosomethingsecret”使用Play.http.secret.key=“changethissosomethingsecret”帮助。谢谢你的发帖。
    $ sbt playUpdateSecret | grep -i "secret"
    [info] Generated new secret: Kz?fHm_I[wt^Onp[@cr<:`ttrQi]KMsdDs>22hEF?RhkoanQ7gA6NAjL33EV2^Xt
    [info] Updating application secret in /Users/blah/someplayapp/conf/application.conf
    [warn] Did not find application secret in /Users/blah/someplayapp/conf/application.conf
    [warn] Adding application secret to start of file
    
    /path/to/yourapp/bin/yourapp -Dconfig.file=/path/to/production.conf