猿问

JAVA通过LDAP做用户登录认证,怎么做业务的异常处理?

通过java.namming包实现LDAP用户登录认证,怎么区分账号被冻结、停用、不存在等异常的业务情况呢?

参考的是:网上普遍流传的LDAP连接的代码


public boolean auth(String username, String password) {

    //设置相关常量

    String initialContextFactory ="com.sun.jndi.ldap.LdapCtxFactory";

    String ad4ProviderURL ="ldap://ip:port";

    String securityAuthentication ="simple";

    String domain ="ad4";


    if (!username.startsWith(domain)) {

        username = domain+"\"+ username;

    }


    /*

     * 组织参数集合

     */

    Hashtable<String,String> env = new Hashtable<String,String>();

    //set the initializing information of the context

    env.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, initialContextFactory);

    //set the URL of ldap server

    env.put(javax.naming.Context.PROVIDER_URL, ad4ProviderURL);

    //set the authentication mode

    env.put(javax.naming.Context.SECURITY_AUTHENTICATION, securityAuthentication);

    //set user of AD

    env.put(javax.naming.Context.SECURITY_PRINCIPAL, username);

    //set password of user

    env.put(javax.naming.Context.SECURITY_CREDENTIALS, password);


    /*

     * 进行LDAP连接

     */

    javax.naming.ldap.LdapContext ctx = null;

    //initialize the ldap context

    try {

        ctx = new javax.naming.ldap.InitialLdapContext(env, null);

    } catch (javax.naming.NamingException ex) {

        System.out.println("Authentication error, username is:"+ username);

        return false;

    } finally {

        if (ctx != null) {

            try {

                ctx.close();

            } catch (javax.naming.NamingException ex) {

                System.out.println("Close Authentication context error");

                ex.printStackTrace();

            }

            return true;    //获取的LdapContext对象不为空,则为登录成功

        }

    }

    return false;    //否则登录失败

}


桃花长相依
浏览 1145回答 2
2回答

守着一只汪

user表中存储着user_status,定义用户的状态。

慕妹3146593

遇到同样的问题,兄弟,解决没?我也是用&nbsp;java.namming,即使是用户被锁定,抛出的异常也只是&nbsp;javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials],找不到其他信息了
随时随地看视频慕课网APP

相关分类

Java
我要回答