【问题标题】:Save new user not in the table Users保存不在表用户中的新用户
【发布时间】:2017-10-25 14:34:06
【问题描述】:

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

安全配置:

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

【问题讨论】:

    标签: java spring spring-security


    【解决方案1】:

    有一些字段常量存储查询。

    例如,你必须

    setCreateUserSql(String createUserSql) 
    

    在使用 createUser 方法之前。

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

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

    【讨论】:

    • 感谢您的回答!但是我还有一些问题:如果我使用serDetailsManager.setCreateUserSql("insert into employee . . .,那么我会得到user lacks privilege or object not found: EMPLOYEE。之后我记得我使用@Table(name = "\"Employee\"")作为Employee类注释,所以我尝试使用setCreateUserSql("insert into \"employee\" . . .,但这也失败了:user lacks privilege or object not found: AUTHORITIES。我现在应该解决什么问题?
    • 对于用户缺少权限或找不到对象的错误,我想最相关的一个是程序找不到所声明的表或列,例如 USERS、EMPLOYEE、AUTHORITIES。你可以google一下,很容易找到答案。
    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 2019-05-25
    • 2013-01-26
    • 2017-05-19
    • 2021-11-02
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多