Java 将LdapUser和AppUserModel组合以创建全局用户
我必须为我的企业制作一个应用程序,通过Active Directory(ldap)提供身份验证。 我的应用程序可以包含没有ldap帐户的用户(临时用户,如临时用户),因此我们可以在我的应用程序数据库中创建自定义用户 LdapUser.java UserModel.java 所以,使用ldap的用户在数据库中不会有密码,而其他用户会 当有人试图连接到我的应用程序时,我首先从ldap检索Java 将LdapUser和AppUserModel组合以创建全局用户,java,structure,Java,Structure,我必须为我的企业制作一个应用程序,通过Active Directory(ldap)提供身份验证。 我的应用程序可以包含没有ldap帐户的用户(临时用户,如临时用户),因此我们可以在我的应用程序数据库中创建自定义用户 LdapUser.java UserModel.java 所以,使用ldap的用户在数据库中不会有密码,而其他用户会 当有人试图连接到我的应用程序时,我首先从ldap检索LdapUser对象。如果用户不存在,我将按用户名/密码加载UserModel。如果用户存在,我将按用户名加载 编
LdapUser
对象。如果用户不存在,我将按用户名/密码加载UserModel
。如果用户存在,我将按用户名加载
编辑:此时,请确保您了解ldapUser在数据库中也有信息。也就是说,ldapUser在数据库中也会有与应用程序相关的信息,而非ldap用户不会有ldapUser类信息(逻辑)
现在我的问题我想知道一种更干净的方法,将UserModel
和LdapUser
结合起来,创建一个authenticated用户
,它可以有一个可为空的LdapUser
和所有UserModel
方法
我首先尝试使用以下模板
@Getter
public final class AuthenticatedUser extends UserModel {
private final Optional<LdapUser> ldap;
public static AuthenticatedUser of(@Nullable LdapUser ldapUser, UserModel user) {
AuthenticatedUser auth = new AuthenticatedUser(ldapUser);
auth.setId(user.getId());
auth.setUsername(user.getUsername());
auth.setPassword(user.getPassword());
auth.setData(user.getData());
return auth;
}
private AuthenticatedUser(LdapUser ldapUser)
{
this.ldap = Optional.ofNullable(ldapUser);
}
}
@Getter
公共最终类AuthenticatedUser扩展UserModel{
私有最终可选ldap;
的公共静态AuthenticatedUser(@Nullable LdapUser LdapUser,UserModel user){
AuthenticatedUser auth=新的AuthenticatedUser(ldapUser);
auth.setId(user.getId());
auth.setUsername(user.getUsername());
auth.setPassword(user.getPassword());
auth.setData(user.getData());
返回auth;
}
私有身份验证用户(LdapUser LdapUser)
{
this.ldap=Optional.ofNullable(ldapUser);
}
}
我想知道这种方式是否不好,因为对UserModel
的每次修改都会迫使我更新(@Nullable-usilizateur-ldapUser,User-User)的静态方法AuthenticatedUser。通过这种方式,我们从第一个实例创建了UserModel
的第二个实例,我觉得它没有那么干净。你…吗?是否有任何已知的模式,或任何改进的想法
@Entity
@Data
public class UserModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String username;
private String password;
private String data;
}
@Getter
public final class AuthenticatedUser extends UserModel {
private final Optional<LdapUser> ldap;
public static AuthenticatedUser of(@Nullable LdapUser ldapUser, UserModel user) {
AuthenticatedUser auth = new AuthenticatedUser(ldapUser);
auth.setId(user.getId());
auth.setUsername(user.getUsername());
auth.setPassword(user.getPassword());
auth.setData(user.getData());
return auth;
}
private AuthenticatedUser(LdapUser ldapUser)
{
this.ldap = Optional.ofNullable(ldapUser);
}
}