请教http身份验证的问题
每次输入用户名密码后点确定要等半分钟才有反映
我研究了一下发现是第二次跑servlet之前不知道为什么等了很长时间
大家帮我看看如何解决这个问题啊
谢谢
代码:
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {
response.setHeader("Pragma", "No-cache");
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
boolean OK = false;
String auth_string = request.getHeader("Authorization");
if (auth_string == null) {
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate",
"Basic realm=\"Enter your email and password to login\"");
response.flushBuffer();
return;
}
if (auth_string.trim().toUpperCase().startsWith("BASIC")) {
System.out.println("begin");
sun.misc.BASE64Decoder bs64dec = new sun.misc.BASE64Decoder();
System.out.println("inital");
String s = new String(bs64dec.decodeBuffer(auth_string.substring(6).
trim()));
System.out.println("get string");
int i = s.indexOf(":");
String user = s.substring(0, i);
String password = s.substring(i + 1);
System.out.println("begin to check");
FNContext context = new FNContext();
ArrayList userList = null;
try {
Hashtable exp = new Hashtable();
exp.put("txtLogin", user);
userList = context.readAllObjects(User.class, exp);
} catch (Exception e) {
e.printStackTrace();
} finally {
context.release();
}
if (userList != null && userList.size() > 0) {
UserManage um = new UserManage();
if (um.domainBasedAuthenticate(user, password)) {
OK = true;
}
}
}
System.out.println("end check");
if (!OK) {
response.setStatus(response.SC_UNAUTHORIZED);
response.setHeader("WWW-Authenticate",
"Basic realm=\"wrong userName or passWord, input again\"");
}
if (OK) {
System.out.println("begin to go");
response.setStatus(response.SC_MOVED_TEMPORARILY);
response.setHeader("Location", "viewData.jsp");
return;
}
}