配置错误[未设置应用程序密钥]

时间:2015-06-22 13:30:25

标签: java scala playframework playframework-2.4

我在生产模式下运行Play 2.4服务器时遇到此错误:

play.api.UnexpectedException: Unexpected exception[ProvisionException: Unable to provision, see the following errors:

1) Error in custom provider, @6mh5cjo5l: Configuration error
  while locating play.api.libs.CryptoConfigParser
  while locating play.api.libs.CryptoConfig

...

Caused by: play.api.PlayException: Configuration error[Application secret not set]

如何解决?

2 个答案:

答案 0 :(得分:8)

默认播放模板使用以下内容:

play.crypto.secret="changeme"
需要更改的application.conf中的

用于生产。 Play提供了一个实用程序来为您生成随机密码:

./activator playGenerateSecret

然后您可以将其填充为环境变量:

APPLICATION_SECRET=...

并在conf/application.conf中确保以下内容:

play.crypto.secret="changeme"
play.crypto.secret=${?APPLICATION_SECRET}

正如Play documentation所解释的那样:

  

该配置中的第二行设置了来自的秘密   环境变量如果是这样的环境则称为APPLICATION_SECRET   变量被设置,否则,它保持秘密不变   上一行。

然后错误就会消失。

答案 1 :(得分:0)

对于仍然会迷惑于此问题并且尚未像我一样使用activator却尚未使用sbt的任何人。

只需遵循Play 2.x页面(Play 2.4 example)上的文档

“魔术”命令是

sbt playUpdateSecret

这将同时生成密钥并更新您的conf文件。因此,此命令为我节省了很多工作和发现。

干杯。