Java 安全域授权一次登录尝试

Java 安全域授权一次登录尝试,java,security,glassfish,ejb,Java,Security,Glassfish,Ejb,我将glassfish 3.1.1与EJB3.0和一个swing客户机一起使用,并为安全目的配置了一个jdbc领域。 除了一件事之外,一切正常,如果用户未能登录(错误登录或密码),登录对话框将不再显示,客户端将自动向服务器发送旧登录/密码。 我怎样才能解决这个问题? 谢谢 编辑身份验证处理程序的代码 public class ociCallBackHandler implements javax.security.auth.callback.CallbackHandler { public v

我将glassfish 3.1.1与EJB3.0和一个swing客户机一起使用,并为安全目的配置了一个jdbc领域。 除了一件事之外,一切正常,如果用户未能登录(错误登录或密码),登录对话框将不再显示,客户端将自动向服务器发送旧登录/密码。 我怎样才能解决这个问题? 谢谢

编辑身份验证处理程序的代码

public class ociCallBackHandler implements javax.security.auth.callback.CallbackHandler {

public void handle(Callback[] callbacks) {
    try {


        String login = null;
        char[] mdp = null;

        while (login == null || login.length() < 2) {
            ArrayList out = GuiLogin.getLogin();

            login = (String) out.get(0);

            mdp = (char[]) out.get(1);
        }

        for (int i = 0; i < callbacks.length; i++) {
            System.out.println("dans boucle");
            if (callbacks[i] instanceof TextOutputCallback) {
                // display the message according to the specified type
                TextOutputCallback toc = (TextOutputCallback) callbacks[i];
                switch (toc.getMessageType()) {
                    case TextOutputCallback.INFORMATION:
                        System.out.println("info");
                        System.out.println(toc.getMessage());

                        break;
                    case TextOutputCallback.ERROR:
                        System.out.println("error");
                        System.out.println("ERROR: " + toc.getMessage());
                        break;
                    case TextOutputCallback.WARNING:
                        System.out.println("warning");
                        System.out.println("WARNING: " + toc.getMessage());
                        break;
                    default:
                        System.out.println("inconuue");
                        throw new IOException("Unsupported message type: "
                                + toc.getMessageType());
                }
            } else if (callbacks[i] instanceof TextInputCallback) {
                System.out.println("textINputCallback");
                TextInputCallback tic = (TextInputCallback) callbacks[i];
                System.err.print(tic.getPrompt());
                System.err.flush();
                tic.setText("read");
            } else if (callbacks[i] instanceof NameCallback) {
                // prompt the user for a username
                NameCallback nc = (NameCallback) callbacks[i];


                nc.setName(login);
            } else if (callbacks[i] instanceof PasswordCallback) {
                // prompt the user for sensitive information
                PasswordCallback pc = (PasswordCallback) callbacks[i];


                pc.setPassword(mdp);


            } else {
                throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
            }
        }

    } catch (Exception e) {
        System.out.println("exceptionn");
        System.out.println(e);
    }

}
公共类ociCallBackHandler实现javax.security.auth.callback.CallbackHandler{
公共无效句柄(回调[]回调){
试一试{
字符串login=null;
char[]mdp=null;
while(login==null | | login.length()<2){
ArrayList out=GuiLogin.getLogin();
login=(字符串)out.get(0);
mdp=(char[])out.get(1);
}
for(int i=0;i

}

如果不亲自查看代码,就很难给出明确的答案。我猜测您的Swing应用程序正在缓存凭据,但与大多数猜测一样,它可能是错误的。所以,请张贴代码。好的,我已经张贴了上面的代码。谢谢