我对当局有疑问。
原因: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();
}
据我所知,您无法在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=?");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句