保存新用户不在表中用户

问题描述:

我试图用编程方式使用Spring Security添加一个新用户,使用this answer。但不幸的是我得到的问题。 代码:保存新用户不在表中用户

SecurityConfig:

private JdbcUserDetailsManager employeeDetailsManager; 

@Bean(name = "employeeDetailsManager") 
public JdbcUserDetailsManager getEmployeeDetailsManager() { 
    return employeeDetailsManager; 
} 

应用:

private static void createUser(ApplicationContext context){ 
     List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); 
     authorities.add(new SimpleGrantedAuthority("supervisor")); 

     PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); 

     UserDetails user = new User("supervisor1", passwordEncoder.encode("supervisor1"), authorities); 

     JdbcUserDetailsManager userDetailsManager = (JdbcUserDetailsManager) context.getBean("employeeDetailsManager"); 
     userDetailsManager.createUser(user);//Exception! 

     Authentication authentication = new UsernamePasswordAuthenticationToken(user, null, authorities); 

     SecurityContextHolder.getContext().setAuthentication(authentication); 
    } 

上线userDetailsManager.createUser(user)我得到异常:

java.sql.SQLSyntaxErrorException:用户缺少特权或对象不是 找到:用户

我明白我为什么得到它:我真的没有表Users。取而代之的是我有表Employees,所以我需要在这张表中保存新用户。

那么如何解决这个错误,并创建并保存用户到表Employees

有一些字段不断存储查询。

例如,你必须

setCreateUserSql(String createUserSql) 

使用的createUser方法之前。

http://docs.spring.io/spring-security/site/docs/4.0.2.RELEASE/apidocs/org/springframework/security/provisioning/JdbcUserDetailsManager.html

请参阅不变,并确保您填写正确。

+0

感谢您的回答!但是我仍然有一些问题:如果我使用'serDetailsManager.setCreateUserSql(“insert into employee ... .',然后我得到'user缺少特权或找不到对象:EMPLOYEE'。之后我记得我使用了'@Table因为我尝试使用'setCreateUserSql(“insert into \”employee \“。。。',但是这也失败了:'user缺少权限或对象未找到:AUTHORITIES'。我现在应该修复什么? –

+0

对于用户缺乏特权或对象未找到错误,我猜最相关的一个是程序找不到表或列的说明,例如用户,雇员,权威。可以谷歌它很容易找到anwser。 – PSo