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

如何在带有JDBC安全性的Spring Boot中使用Flyway?

朱建弼
2023-03-14

我希望在Spring Boot项目(使用当前的V1.2.1版本)中使用Flyway作为数据库迁移处理的首选方式。

到目前为止,这工作得很好,但是使用JDBC数据源与Spring Security的集成似乎会覆盖Flyway机制。

下面是一个简单的场景:

  • Spring Boot 1.2.1
  • PostgreSQL 9.4.1
  • 根据Spring Security文档为用户、组和权限编写的Flyway迁移脚本

问题:Flyway迁移脚本在启动时未按预期执行。

可能原因:似乎只有在使用Spring Boot项目至少也使用JPA的情况下,才会在启动时执行Flyway。由于Spring Security是基于普通JDBC的,所以我尝试临时使用Spring Boot docs(第68.3章)中描述的基于JDBC的数据库初始化方案,该方案很管用,但(如文档所述)这种方式就像“穷人方法”,我真的希望对包含用户/组/权限信息的表也使用Flyway。

共有1个答案

劳夕
2023-03-14

好的,经过进一步的调查,我发现了问题:

实际上,在标准的Spring Boot项目中,安全上下文是在任何基于Flyway的迁移发生之前初始化的。

通常这不是一个大问题,但我也使用authenticationManagerBuilder来创建默认的admin用户。这似乎是创建这样一个初始用户帐户的错误方法。

 类似资料:
  • 尽管有这个问题,我仍然没有确定我的配置中导致JMeter JDBC采样器拒绝集成安全性的错误。 < li >下载了用于x64的SQL Server JDBC软件包,并在JMETER_PATH\lib中安装了mssql-jdbc-9.4.1.jre8.jar。 < li >也在JMETER_PATH\lib中安装了mssql-jdbc_auth-9.4.1.x86.dll,但是,按照Blazemet

  • 问题内容: 我有一个带有身份验证服务的简单REST应用程序。我尝试向其中添加swagger和swagger-ui,但只能在中看到端点。在其中,我仅看到端点组,但是无法扩展任何列表。 在chrome调试中,我看到: 加载资源失败:服务器响应状态为401() 未捕获的TypeError:无法读取未定义的属性’indexOf’ 在带有服务器的终端上: 错误10020-[nio-5001-exec-3]

  • 我没有使用Spring Security性,但它要求我进行身份验证。 URL例外(http://localhost:8080/SpringJob/ExecuteJob): application-dev.xml build.gradle片段 控制器

  • 问题内容: 由于需要执行一些服务器端代码-主要是发送电子邮件,因此我决定将Nodejs&Express与Firebase一起用于服务器端元素以保存数据- 部分是出于学习经验。 我的问题是,在使用简单电子邮件和密码API进行身份验证时,使用客户端Firebase库和Nodejs库的最佳方法是什么?如果我执行身份验证客户端,然后随后在NodeJS端调用其他路由,则该用户的身份验证将在请求中进行。在No

  • 问题内容: 当居中的flexbox项溢出其容器时,它们可能具有不良行为。 已经针对此问题提供了几种非灵活的解决方案,但是根据MDN,存在一个如下所述的值。 如果项目的大小溢出对齐容器,则将对齐该项目,就好像对齐模式已开始一样。 可以如下使用。 不幸的是,我无法找到任何示例或讨论,也无法确定浏览器对此有多少支持。 我试图在此CodePen中使用。但是,它对我不起作用。本似乎被忽略,或者容器元素是不正