我有一个使用Spring Security进行身份验证和授权的Web应用程序。
在我的securityConfiguration文件中,我有这些行
@Autowired
private DataSource dataSource;
@Value("${spring.queries.users-query}")
private String usersQuery;
@Value("${spring.queries.roles-query}")
private String rolesQuery;
以后用于身份验证。 在application.properties文件中,我有:
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
spring.jpa.show-sql= true
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false
spring.queries.users-query=select email, password from users where email=?
spring.queries.roles-query=select u.email, r.role from users u inner join
user_role ur on(u.user_id=ur.user_id) inner join role r
on(ur.role_id=r.role_id) where u.email=?
但我明白了:' spring.datasource.testWhileIdle'是一个未知的财产。你的意思是' spring.datasource.tomcat.abandon-when-percentage-full'? 还有一个关于spring.validationQuery以及spring.queries..it的下划线黄色的错误。 所以登录过程总是返回false。
任何人都可以帮我找出问题所在吗?我是Spring框架的新手,任何帮助都会受到赞赏。
答案 0 :(得分:1)
假设您正在使用连接池数据库,请更改
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
到此:
spring.datasource.tomcat.test-while-idle=true
spring.datasource.tomcat.validation-query=SELECT 1
您可以在Spring Documentation - Working with Database.
中查看有关此内容的其他信息同时将spring.queries.users-query
和spring.queries.roles-query
分别更改为myapp.queries.users-query
和myapp.queries.roles-query
。所有以spring.*
开头的属性都是标准属性,所有可用的标准属性都列在Spring Documentation中。如果您需要使用自定义属性,请更改名称,例如使用myapp.mycustomproperty