当前位置: 首页 > 知识库问答 >
问题:

带有用户名和密码的宗基Spring靴邮递飞行路线

昝成弘
2023-03-14

我们正在使用Zonky对Postgres和Flyway支持的Spring Boot应用程序进行集成测试。一切都很顺利。
但是,由于我们拥有特定的数据库配置,应用程序用户没有DDL权限。因此,对于数据库迁移,我们有一个不同的数据库用户(具有DDL权限),我们通过spring.flyway.user进行设置。不幸的是,为flyway设置用户名会强制FlywayAutoConfiguration专门为Flyway创建内联数据源。这是一个问题,因为Zonky在启动Postgres实例后,会使用具有正确url/user/pass的实例覆盖原始数据源bean。因此,Flyway尝试连接不存在的数据库并失败,连接被拒绝。(请参阅存储库中的问题)

共有1个答案

鲁鸿朗
2023-03-14

由于为Flyway创建的具有专用凭据的数据源不是bean,因此Zonky对此无能为力。
一种解决方案是为 Flyway 创建一个数据源 Bean,并使用@FlywayDataSource对其进行注释。但这意味着您还必须创建主数据源并使其@Primary
在我们的例子中,我们使用了由Spring Boot创建的数据源Bean,所以我们没有采用上述解决方案。相反,我们在集成测试中添加了以下内容:

public class SpringFlywayCredentialsInitializer
        implements ApplicationContextInitializer<ConfigurableApplicationContext> {

    @Override
    public void initialize(ConfigurableApplicationContext c) {
        for (PropertySource<?> s : c.getEnvironment().getPropertySources()) {
            if (s.containsProperty("spring.flyway.user") 
                    && s instanceof MapPropertySource) {
                ((MapPropertySource) s).getSource().remove("spring.flyway.user");
            }
        }
    }
}
 类似资料:
  • 我正在尝试使用Postman发出POST请求。我拥有的凭据只是一个API密钥,而不是用户名和密码。 现在在Postman中,只要我选择“基本认证”,它就会提示输入用户名和密码。所以我将这些字段留空,然后转到Headers以给出我自己的授权键值,这给我留下了两个“授权”字段,如屏幕截图所示,我得到了无效的身份验证响应。 使用CLI中的CUrl命令授权工作正常。有解决方法吗?

  • 我正在试着制作一个定制的发射器,但我不知道如何使用命令行来启动minecraft。我看到了这个问题:从命令行启动Minecraft-使用名称和密码作为前缀。但是答案根本不起作用,所以有人能告诉我如何使用以用户名和密码为前缀的命令行启动minecraft吗

  • 我有一个django rest_framework API、Swagger和一个Swagger UI。当我没有登录时,我只能看到非常有限的“登录”和“文档”视图。当我登录后,我可以看到很多东西。 我正在尝试使用swagger-代码生成客户端: 然而,它只生成一个非常有限的客户端,提供“登录”和“文档”功能。 如何让 swagger-codegen 知道如何使用 http 基本身份验证登录,以便生成

  • 这样,把pdf文件复制给别人就会迫使“复印机”说出他的用户名和密码…… 编辑:密码是打开文件而不是编辑或打印它,我希望用户能够突出显示文本和添加他们自己的注释

  • 我的问题很“简单”。我不知道如何设置OAUTH2身份验证服务器以接受用户名/密码并返回令牌。 如果我使用: 卷曲:password@localhost:8081/oauth/token\?grant\u type=client\u credentials它返回令牌,但问题是它在DB中注册用户“curl”,所以。。。不太好。。。 如果我使用: http://www.example.com:8081/