我一直在使用 Spring Boot 开发一个网络应用程序。昨天我添加了 Spring Security 并为任何请求强制使用 HTTPS,扩展了 WebSecurityConfigurerAdapter
并添加了
http.authorizeRequests().anyRequest().permitAll().and().requiresChannel().anyRequest().requiresSecure();
到 configure(HttpSecurity http)
覆盖的方法。
我还在返回 ServletWebServerFactory
的 bean 中添加了一个额外的 Connector
,它将 HTTP 重定向到 HTTPS:
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(80);
connector.setRedirectPort(443);
突然间,我遇到了很多这样的错误:
org.postgresql.util.PSQLException: ERROR: column AAA does not exist
org.postgresql.util.PSQLException: ERROR: relation "BBB" does not exist
AAA
和 BBB
存在于数据库中(我使用 DataGrip 验证)。其他代码都没有被触及。我使用 JdbcTemplate
进行查询(没有 Hibernate/JPA)。
我有两年的 Spring 经验,我觉得这令人眼花缭乱。不过,不得不说这是我在 Spring 中从头开始完成的第一个应用程序。
最佳答案
我终于解决了这个棘手的问题。这是因为在启用 Spring Security 的情况下启动应用程序时,我通过命令行参数传递了错误的连接字符串。
在阅读了您的评论后,我再次对代码进行了回归,并注意到抛出了相同的异常,因此立即将 Spring Security 排除在罪魁祸首之外。
我之前没有注意到它,因为我以前的启动是使用正确的连接字符串完成的(没有注意到)。
这是一个错误,因为我从存储命令行参数的文本文件中复制粘贴了错误。
感谢您确认 Spring Security 和数据库问题无关,我能够更好地指导我的搜索。
关于java - 添加Spring Security导致列和表丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834442/