【问题标题】:JHipster/LDAP - Create new user in JHipster BDD on first connectionJHipster/LDAP - 在第一次连接时在 JHipster BDD 中创建新用户
【发布时间】:2019-04-29 03:11:22
【问题描述】:

我是 JHipster 的新手,并从官方来源 (JHipster LDAP) 配置了 LDAP。

LDAP 身份验证现在可以正常工作了。

现在我想在 JHipster 数据库的第一个连接上创建新用户。

姓名/邮件/...的用户信息在 LDAP 上。

创建必须在从 LDAP 成功验证后发生。

有什么建议吗?

【问题讨论】:

    标签: spring ldap


    【解决方案1】:

    好的,我找到了答案。

    Jhipster LDAP 连接实现后,需要修改类 CustomAuthenticationManager:authenticate,将 mapUserFromContext 方法替换为以下代码:

    @Override
            public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> clctn) {
                Optional<User> isUser = userRepository.findOneWithAuthoritiesByLogin(username);
                if(!isUser.isPresent()){
                    UserDTO newUser = new UserDTO();
                    newUser.setLogin(authentication.getName());
                    newUser.setFirstName(ctx.getStringAttribute("givenName"));
                    newUser.setLastName(ctx.getStringAttribute("sn"));
                    newUser.setEmail(ctx.getStringAttribute("mail"));
                    newUser.setLangKey("fr");
                    newUser.setImageUrl("youimageurl");
                    userService.registerUser(newUser, "1");
                }
                isUser = userRepository.findOneWithAuthoritiesByLogin(username);
                final User user = isUser.get();
                Set<Authority> userAuthorities = user.getAuthorities();
                Collection<GrantedAuthority> grantedAuthorities = new ArrayList<>();
                for(Authority a: userAuthorities){
                    GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(
                        a.getName());
                    grantedAuthorities.add(grantedAuthority);
                }
                return new org.springframework.security.core.userdetails.User(
                    username, "" , grantedAuthorities);
            }
    

    如果登录用户在 JHipster 数据库中未知(在 LDAP 身份验证成功后发生),则会创建一个新用户(newUser)。

    使用 ctx.getStringAttribute("ldapProperty") 从 LDAP 获取信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多