保存不在表Users中的新用户

时间:2017-05-25 04:03:57

标签: java spring spring-security

我尝试使用this answer以编程方式添加使用Spring Security的新用户。但遗憾的是我遇到了问题。 代码:

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:user缺少权限或对象   发现:用户

我理解为什么会得到它:我真的没有桌子Users。而不是这个我有表Employees,所以我需要在此表中保存新用户。

那么如何修复此错误并创建用户并将其保存到表Employees

1 个答案:

答案 0 :(得分:0)

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

例如,你必须

setCreateUserSql(String createUserSql) 

在使用createUser方法之前。

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

请参考常数并确保填写正确。