Java 安全域授权一次登录尝试
我将glassfish 3.1.1与EJB3.0和一个swing客户机一起使用,并为安全目的配置了一个jdbc领域。 除了一件事之外,一切正常,如果用户未能登录(错误登录或密码),登录对话框将不再显示,客户端将自动向服务器发送旧登录/密码。 我怎样才能解决这个问题? 谢谢 编辑身份验证处理程序的代码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
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应用程序正在缓存凭据,但与大多数猜测一样,它可能是错误的。所以,请张贴代码。好的,我已经张贴了上面的代码。谢谢