1
我試圖用編程方式使用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
?
感謝您的回答!但是我仍然有一些問題:如果我使用'serDetailsManager.setCreateUserSql(「insert into employee ... .',然後我得到'user缺少特權或找不到對象:EMPLOYEE'。之後我記得我使用了'@Table因爲我嘗試使用'setCreateUserSql(「insert into \」employee \「。。。',但是這也失敗了:'user缺少權限或對象未找到:AUTHORITIES'。我現在應該修復什麼? –
對於用戶缺乏特權或對象未找到錯誤,我猜最相關的一個是程序找不到表或列的說明,例如用戶,僱員,權威。可以谷歌它很容易找到anwser。 – PSo