Java 保存新用户不在表Users中
我正在尝试使用Spring Security以编程方式添加一个新用户。但不幸的是我遇到了问题。 代码: SecurityConfig:Java 保存新用户不在表Users中,java,spring,spring-security,Java,Spring,Spring Security,我正在尝试使用Spring Security以编程方式添加一个新用户。但不幸的是我遇到了问题。 代码: SecurityConfig: private JdbcUserDetailsManager employeeDetailsManager; @Bean(name = "employeeDetailsManager") public JdbcUserDetailsManager getEmployeeDetailsManager() { return employeeDetailsM
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);
}
private static void createUser(ApplicationContext上下文){
列表权限=新建ArrayList();
添加(新的简化授权(“监管人”);
PasswordEncoder PasswordEncoder=新的BCryptPasswordEncoder();
UserDetails user=新用户(“监督者1”,passwordEncoder.encode(“监督者1”),权限;
JdbcUserDetailsManager userDetailsManager=(JdbcUserDetailsManager)context.getBean(“employeeDetailsManager”);
userDetailsManager.createUser(用户);//异常!
Authentication Authentication=新用户名PasswordAuthenticationToken(用户、空、权限);
SecurityContextHolder.getContext().setAuthentication(身份验证);
}
在userDetailsManager.createUser(user)
行中,我得到异常:
java.sql.SQLSyntaxErrorException:用户缺少权限或对象不存在
发现:用户
我明白为什么我会得到它:我真的没有一个表Users
。相反,我有表Employees
,所以我需要在此表中保存新用户
那么,如何修复此错误并创建用户并将其保存到表
Employees
?中有常数字段存储查询
例如,你必须
setCreateUserSql(String createUserSql)
在使用createUser方法之前
请参考常数,并确保填写正确。有常数字段存储查询 例如,你必须
setCreateUserSql(String createUserSql)
在使用createUser方法之前
请参考常数并确保填写正确。谢谢您的回答!但我仍然有一些问题:如果我使用
serDetailsManager.setCreateUserSql(“插入到员工中…”
,那么我会得到用户缺少权限或找不到对象:员工
。之后我记得我使用@Table(name=“\'employee\”)
作为员工类注释,所以我尝试使用setCreateUserSql(“插入到“雇员”中…
,但这也失败了:用户缺少权限或找不到对象:权限
。我现在应该修复什么?对于用户缺少权限或找不到对象的错误,我想最相关的一个是程序找不到声明的表或列,例如用户、员工、权限。您可以通过谷歌搜索它并找到nwser很容易。谢谢你的回答!但我仍然有一些问题:如果我使用serDetailsManager.setCreateUserSql(“插入员工…”
,那么我会得到用户缺少权限或找不到对象:employee
。之后我记得我使用了@Table(name=“\”employee\”)
作为Employee类注释,所以我尝试使用setCreateUserSql(“插入到\“Employee\”…
,但这也失败了:用户缺少权限或找不到对象:权限
。我现在应该修复什么?对于用户缺少权限或找不到对象的错误,我想最相关的一个是程序找不到声明的表或列,例如用户、员工、权限。您可以通过谷歌搜索它并找到我很容易就学会了。