问题描述
我写了一个安全退出,用户验证是通过session和cookie来验证的,安全退出就把session和cookie删掉,程序编译和部署都没有问题。部分代码是这样的,删除cookie已经实现不写了,使session失效。HttpSessionsession=req.getSession(false);if(session!=null){session.invalidate();}就这段代码,应该使我的session失效了,我重新登录后点击安全退出,运行上面的代码,session失效,然后我不登陆,直接输入selvet欢迎地址,还是照样能看到欢迎界面,这是为什么?
解决方案
解决方案二:
HttpSessionsession=req.getSession(false);if(session!=null){session.removeAttribute("....");session.invalidate();}
解决方案三:
HttpSessionsession=req.getSession(false);if(session!=null){session.removeAttribute("username");session.removeAttribute("password");session.invalidate();}这样好像还是不行啊?
解决方案四:
完整的代码是这样的://安全退出页面packagecom.sun.example;importjavax.servlet.http.*;importjava.io.*;importjavax.servlet.*;publicclassLogoutextendsHttpServlet{publicvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{PrintWriterout=resp.getWriter();//从请求中得到一个会话,如果得到一个session,就将session设置为失效。HttpSessionsession=req.getSession(false);if(session!=null){session.removeAttribute("name");session.removeAttribute("password");session.invalidate();}//从客户请求中得到cookie。Cookie[]cookies=req.getCookies();for(Cookiecookie:cookies){if(cookie.getName().equals("myname")){cookie.setMaxAge(0);//cookie.setPath("/");resp.addCookie(cookie);}if(cookie.getName().equals("mypassword")){cookie.setMaxAge(0);resp.addCookie(cookie);}}resp.sendRedirect("login");}}
解决方案五:
请问上面的代码为什么不能使SESSION失效?
解决方案六:
Set<String>set=session.keySet();Iterator<String>i=set.iterator();Stringk=null;while(i.hasNext()){k=i.next();if(session.containsKey(k)){session.remove(k);}}