我试图在我的系统上创建一个登录屏幕,在 Active Directory 中进行查询,但是当用户的密码包含一些特殊字符(如 @ 和 *)时,它不会验证。
我需要加密密码才能工作吗?我该怎么做?
我使用 getPassword () 通过 JPasswordField 获取用户密码。
boolean valid_login = false;
String password = new String(pwd.getPassword());
try {
LdapContext ctx = null;
Hashtable<String, String> env = new Hashtable<>();
try {
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "Simple");
env.put(Context.SECURITY_PRINCIPAL, user);
env.put(Context.SECURITY_CREDENTIALS, password);
env.put(Context.PROVIDER_URL, "ldap://ldap:389/");
ctx = new InitialLdapContext(env, null);
valid_login = true;
ctx.close();
} catch (NamingException nex) {
valid_login = false;
}
} catch (Exception ex) {
valid_login = false;
}
return valid_login;
}
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)