play.db.ebean.DefaultEbeanConfig中的Nullpointer

时间:2018-08-17 06:45:33

标签: playframework ebean

我正在寻找一种解决方案,以加密我的Play应用程序数据库。该应用程序已使用Ebean.io。我看到我可以使用Ebean解决方案对数据库进行加密。在那里,我配置了application.conf

ebean {
 default = ["models.*"]
 encryptKeyManager = models.BasicEncryptKeyManager
}

在此步骤之后,我实现了自己的ServerStartup,如下所示:

public class CustomServerConfigStartup implements ServerConfigStartup {

    @Override
    public void onStart(ServerConfig serverConfig) {
        serverConfig.setEncryptKeyManager(new BasicEncryptKeyManager());
    }
}

class BasicEncryptKeyManager implements EncryptKeyManager {

    @Override
    public EncryptKey getEncryptKey(String tableName, String columnName) {
        return new CustomEncryptKey(tableName, columnName);
    }

    @Override
    public void initialise() {
        //Do nothing (yet)
    }

}

class CustomEncryptKey implements EncryptKey {

    private String tableName;

    private String columnName;

    public CustomEncryptKey(String tableName, String columnName) {
        this.tableName = tableName;
        this.columnName = columnName;
    }

    @Override
    public String getStringValue() {
        return play.Configuration.root().getString("play.http.secret.key") + "::" + this.tableName + "::" + this.columnName;
    }
}

我用@Encrypted注释了实体的所有值。

@Entity
public class Settings extends Model {
    @Id
    public Long id;
    @Encrypted
    public String title;
}

我认为例外是Ebean的原因,因此我在Ebean https://groups.google.com/forum/?hl=de#!topic/ebean/7wD1pZIhu8U的GoogleGroup中创建了一个帖子。但是他们说这个例外是播放例外,所以现在我在这里。

有没有使用Ebean或其他技术对数据库进行加密的解决方案?

0 个答案:

没有答案