我是JHipster的新手,并从官方来源(JHipster LDAP)配置了LDAP。
现在可以进行LDAP身份验证并且可以正常工作。
现在,我想在JHipster数据库中的第一次连接上创建新用户。
名称/邮件/ ...的用户信息在LDAP上。
创建必须在从LDAP成功认证之后进行。
有什么建议吗?
答案 0 :(得分:0)
好,我找到了答案。
实现Jhipster LDAP连接后,您需要通过将mapUserFromContext方法替换为以下代码来修改CustomAuthenticationManager:authenticate类:
@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获取信息。