保存新用户不在表中用户
问题描述:
我试图用编程方式使用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方法之前。
请参阅不变,并确保您填写正确。
感谢您的回答!但是我仍然有一些问题:如果我使用'serDetailsManager.setCreateUserSql(“insert into employee ... .',然后我得到'user缺少特权或找不到对象:EMPLOYEE'。之后我记得我使用了'@Table因为我尝试使用'setCreateUserSql(“insert into \”employee \“。。。',但是这也失败了:'user缺少权限或对象未找到:AUTHORITIES'。我现在应该修复什么? –
对于用户缺乏特权或对象未找到错误,我猜最相关的一个是程序找不到表或列的说明,例如用户,雇员,权威。可以谷歌它很容易找到anwser。 – PSo