我对当局有疑问。
原因:PreparedStatementCallback;糟糕的SQL语法[选择 用户名,权限来自权限,用户名=?];嵌套 异常是org.postgresql.util.PSQLException:错误:关系 “当局”不存在职位:32
我不想实现权限,但不知道如何在Spring中的JavaConfig中禁用它。
@Override
protected void configure(AuthenticationManagerBuilder auth)
throws Exception {
auth.jdbcAuthentication()
.dataSource(dataSource)
.usersByUsernameQuery(
"select username,password,'true' as enabled from users where username=?")
.passwordEncoder(new ShaPasswordEncoder());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().formLogin().and().httpBasic();
}
答案 0 :(得分:2)
据我所知,您无法在Spring Security中使用JavaConfig停用权限机制,但您可以覆盖用于获取权限数据的查询以达到相同的效果。
使用Spring Security的JDBC身份验证时,会对数据库方案做出某些假设来检索身份验证数据。您已经通过调用usersByUsernameQuery()
覆盖了用于获取示例中的用户数据的查询。
我设法通过覆盖查询来有效地禁用整个权限检查,以获取这样的权限数据(如Craig Walls的“Spring in Action”中所述):
@Override
public void configure(AuthenticationManagerBuilder authenticationManagerBuilder)
throws Exception {
authenticationManagerBuilder.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"SELECT username, password, enabled FROM users WHERE username=?")
.authoritiesByUsernameQuery(
"SELECT username, 'ROLE_USER' FROM users WHERE username=?");
}