安全的web退出登录过程 能否详细的描述安全的退出登录过程?请求发送,cookie的清理等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我这没环境,Java 有除cookie的方法, 就把Cookie中的数据清除就行了一般这种对象都有销毁的方法的 请用session的invalida()方法。或者设置session的最长生命周期为0. session.invalidate();//销毁当前session,就是销毁该用户对应会话的一切信息 就是调用session的invalidate()方法,一般情况下 ,不用去消除cookies的 如果要消除cookies的话有调用消除cookies的方法 你查一下吧,,这个我忘了 1、客户端发送退出登录请求2、服务端销毁当前的session,并清除cookie,响应是不是这有这两步? session的invalidate()方法 就可以了,其他的不用管了,java的回收机制都搞定了 invalidate() 调用这个方法就可以了吧.反正我没用别的 就直接销毁当前的session就行了? 请用session的invalida()方法。或者设置session的最长生命周期为0.这个方法以前我试过,退出以后,虽然session中保存的东西已经清空。但是我在地址栏再次输入登录后的地址,仍然能够进入。这个时候我再次刷新的时候却提示需要登录。求解:为何还能进一次? 那不是session的问题,那是浏览器缓存,浏览器已经记住你的用户名和密码了! 自己写过滤器,判断请求的URL。package web;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet Filter implementation class FilterLogin */public class FilterLogin implements Filter { /** * Default constructor. */ public FilterLogin() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest=(HttpServletRequest)request; HttpServletResponse httpResponse=(HttpServletResponse)response; if(httpRequest.getSession(false)==null||httpRequest.getSession().getAttribute("sysUser")==null){ if(httpRequest.getRequestURI().equals(httpRequest.getContextPath() + "/Login.jsp")){ chain.doFilter(request, response); } else{ httpResponse.sendRedirect(httpRequest.getContextPath() + "/Login.jsp?ErrorInfo=" + httpRequest.getAttribute("ErrorInfo")); } }else{ chain.doFilter(request, response); } } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { }} 你可以在页面设置<% response.setHeader("cache-control","no-cache"); response.setHeader("cache-control","no-store"); response.setHeader("expire","0"); response.setHeader("progma","no-cache"); %>让浏览器不缓存你的session中的信息这样你退出之后就不会再访问了,还有就是你写个过滤器,在退出之后,如果有后退操作的话,可以让它直接转到你的登录页面 很搞笑啊 登录时写入cookie 退出时清除cookie那cookie有什么用?? 你退出时把Session清除掉,另外写一下过滤器,如果Session中没值就强行跳转到登陆界面,或是要求登陆! 如果 退出要清除cookie 那就不要写cookie啦 ,都起不作用 立即销毁Session 考虑到有 安全退出 功能的应用,一般不会对cookie有操作,所以没必要考虑cookie 否则这样的安全系统设计是有问题的 request.getSession.removeAttribute("LOGIN_USER"); 逻辑运算符的问题 看过《JSP数据库通用模块开发与系统移植》第6章网上聊天室的进来 JSP 数据库问题 java和c++的区别是什么? JavaMail下载附件问题 js获取web编辑器的内容问题 一奇怪问题? File上传问题 熟悉web报表的朋友请进 有关Servlet,请高手指点。 JSP中Request对象读参数的汉字编码问题 一个关于el与jstl的简单问题.
或者设置session的最长生命周期为0.
session.invalidate();//销毁当前session,就是销毁该用户对应会话的一切信息
2、服务端销毁当前的session,并清除cookie,响应
是不是这有这两步?
请用session的invalida()方法。
或者设置session的最长生命周期为0.
这个方法以前我试过,退出以后,虽然session中保存的东西已经清空。
但是我在地址栏再次输入登录后的地址,仍然能够进入。这个时候我再次刷新的时候却提示需要登录。求解:
为何还能进一次?
自己写过滤器,判断请求的URL。
package web;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/**
* Servlet Filter implementation class FilterLogin
*/
public class FilterLogin implements Filter { /**
* Default constructor.
*/
public FilterLogin() {
// TODO Auto-generated constructor stub
} /**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
} /**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest=(HttpServletRequest)request;
HttpServletResponse httpResponse=(HttpServletResponse)response;
if(httpRequest.getSession(false)==null||httpRequest.getSession().getAttribute("sysUser")==null){
if(httpRequest.getRequestURI().equals(httpRequest.getContextPath() + "/Login.jsp")){
chain.doFilter(request, response);
}
else{
httpResponse.sendRedirect(httpRequest.getContextPath() + "/Login.jsp?ErrorInfo=" + httpRequest.getAttribute("ErrorInfo"));
}
}else{
chain.doFilter(request, response);
}
} /**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
}}
你可以在页面设置<%
response.setHeader("cache-control","no-cache");
response.setHeader("cache-control","no-store");
response.setHeader("expire","0");
response.setHeader("progma","no-cache");
%>
让浏览器不缓存你的session中的信息
这样你退出之后就不会再访问了,还有就是你写个过滤器,在退出之后,如果有后退操作的话,可以让它直接转到你的登录页面
登录时写入cookie 退出时清除cookie
那cookie有什么用??
考虑到有 安全退出 功能的应用,一般不会对cookie有操作,所以没必要考虑cookie 否则这样的安全系统设计是有问题的