`
陈静静2014
  • 浏览: 41874 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

用cookie和session实现自动登录

阅读更多
算是今天的学习笔记吧。。。
在点击登录输入用户名和密码后,当验证用户名和密码都正确且有正确返回值时,在LoginSvl中创建一个cookie保存此用户名和密码:
String unamepwd = user.getUname()+","+user.getPwd();
Cookie cookie=new Cookie("unamepwd",unamepwd);
cookie.setMaxAge(60*60*24*7);
response.addCookie(cookie);

创建一个过滤器,在下次登录时,当session中的user为空,则从cookie中获取上次保存的用户名密码,调用biz,通过biz调dao,验证cookie中保存的信息是否是否适用于此次登录,即验证数据库中密码或用户名是否改变,若改变,则清除此cookie。若没改变,则自动登录。
LoginFilter中的代码:
    public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		
		HttpServletRequest request=(HttpServletRequest) req;
		HttpServletResponse response=(HttpServletResponse) resp;
		if(request.getSession().getAttribute("user") == null){
			Cookie loginCookie=getLoginCookie(request, "unamepwd");
			if(loginCookie != null){
				String[] unamepwds=loginCookie.getValue().split(",");
				UserBiz bbiz =new UserBiz();
				User uuser=bbiz.login(unamepwds[0], unamepwds[1]);
				if(uuser != null){
					request.getSession().setAttribute("user", uuser);
				}else{
					Cookie cookie=new Cookie(loginCookie.getName(),null);
					cookie.setMaxAge(0);
					response.addCookie(cookie);
				}
			}
			
		}
		chain.doFilter(request, response);
	}
	
	private Cookie getLoginCookie(HttpServletRequest request,String cookieName){
		Cookie strRet = null;
		if(request.getCookies() != null){
			Cookie[] cookies = request.getCookies();                             
			for(int i=0;i<cookies.length;i++){
				Cookie cookie = cookies[i];
				String cm = cookie.getName();			
				if(cm.equals(cookieName)){	
					strRet = cookie;	
					break;
				}				
			}
		}
		return strRet;
	}

注:filter需要在web.xml中做响应配置。其中<url-pattern></url-pattern>中只能写/*,否则不能自动登录。
最后要在点击退出按钮时,清除cookie,以免其他用户无法登录:
LoginOutSvl中代码:
public void service(HttpServletRequest request,HttpServletResponse response)
    throws ServletException,IOException{
		
		request.getSession().invalidate();
		Cookie loginCookie = getLoginCookie(request, "unamepwd"); 
		Cookie cookie=new Cookie(loginCookie.getName(),null);
		cookie.setMaxAge(0);   
		response.addCookie(cookie);
		request.getRequestDispatcher("MainSvl").forward(request,response);
	
	}
	
	private Cookie getLoginCookie(HttpServletRequest request,String cookieName){
		Cookie strRet = null;
		if(request.getCookies() != null){
			Cookie[] cookies = request.getCookies();                             
			for(int i=0;i<cookies.length;i++){
				Cookie cookie = cookies[i];
				String cm = cookie.getName();			
				if(cm.equals(cookieName)){	
					strRet = cookie;	
					break;
				}				
			}
		}
		
		return strRet;
	}
0
0
分享到:
评论
2 楼 陈静静2014 2014-09-18  
这只是课间的小练习 还没做优化 不好意思
1 楼 cs6641468 2014-09-18  
密码就明文放在cookie里,太狠了吧

相关推荐

    jsp cookie+session实现简易自动登录

    本文实例为大家分享了jsp cookie+session实现简易自动登录的具体代码,供大家参考,具体内容如下 关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。 如果设置了...

    c#实现cookie和session的登陆实例

    在Web开发中,Cookie和Session是两种常见的用户身份验证...通过以上讲解,你应该对C#中如何使用Cookie和Session进行登录实现了深入的理解。实际项目中,应根据需求选择适合的用户认证方法,并确保遵循最佳安全实践。

    JAVA通过Session和Cookie实现网站自动登录的技术

    通过使用 Session 和 Cookie,网站可以实现自动登录功能,提高用户体验。同时,在实现自动登录时,需要对密码进行加密,以确保密码的安全。在实际开发中,需要根据具体情况选择合适的实现方法。

    JAVA通过Session和Cookie实现网站自动登录

    虽然使用`Session`和`Cookie`实现自动登录可以极大地提高用户体验,但同时也需要特别注意安全性问题。例如,Cookie可能会被截获或篡改,因此建议对敏感信息(如密码)进行加密处理,并且限制Cookie的使用场景,避免...

    cookie+session实现的单点登录案例

    在这个案例中,我们将探讨如何利用Cookie和Session来实现SSO,同时结合第三方社交登录,如微博,来增强用户体验。 ### Cookie与Session的基本原理 1. **Cookie**: 是服务器发送到用户浏览器并存储的一小块数据,...

    javaWeb_Session(实现用户一段时间自动登录)

    综上所述,JavaWeb中的Session技术是实现用户自动登录的核心,它通过在服务器端存储用户信息并在客户端通过Cookie传递Session ID来保持用户状态。正确地配置和管理Session,能够为用户提供流畅的登录体验,同时也...

    jsp cookie+session实现简易自动登录.docx

    在此页面中,我们将检查用户的Cookie和Session,以实现自动登录。 ```jsp ;charset=UTF-8" pageEncoding="UTF-8" %&gt; &lt;!DOCTYPE html&gt; String name = (String) session.getAttribute("username"); // ...

    经典收藏Cookie和Session

    - **自动登录功能**:网站通常会提供“记住我”选项,即通过设置持久Cookie来保存用户的登录状态,以便下次访问时无需重新登录。 - **个性化推荐**:利用Cookie记录用户的浏览历史和喜好,为用户提供个性化的服务。 ...

    Cookie实现自动登录

    本文将深入探讨Cookie如何实现自动登录,以及与之相关的源码和工具。 Cookie是Web服务器发送到用户浏览器并存储在本地的一小段数据,用于在后续请求中识别用户。它们是HTTP协议无状态特性的补充,因为HTTP本身不...

    .net通过Session和Cookie实现网站自动登录的技术

    在实现自动登录的过程中,WinTest可能首先通过发送POST请求模拟用户登录,获取到SessionID,然后将SessionID保存到一个Cookie中。接着,当再次访问网站时,WinTest会检查Cookie中的SessionID,并将其附带在HTTP请求...

    利用Cookie、Session写的登录页面、成功页面、退出页面

    - 在实际应用中,通常结合使用Cookie和Session,Cookie用于存储Session ID,而Session存储用户详细信息,兼顾安全性和效率。 4. 安全考虑: - 防止Session劫持:使用HTTPS加密传输,防止Session ID被中间人截取。...

    cookie和session

    通过Cookie与Session机制,服务器能够识别并处理用户的状态信息,从而实现更丰富的交互体验。本文将详细解析Cookie与Session的工作原理、区别及应用场景。 #### 一、Cookie与Session的基本概念 **Cookie**:是一种...

    day16_cookie&session源代码.zip

    例如,你可以使用`HttpServletResponse.addCookie(Cookie cookie)`添加Cookie,用`HttpServletRequest.getCookies()`获取客户端发送的所有Cookie。对于Session,可以通过`HttpServletRequest.getSession()`获取或...

    JavaWeb基础-Cookie和Session的简单使用案例

    在实际应用中,开发者通常结合使用Cookie和Session,比如用Cookie存储用户偏好,用Session管理用户登录状态。同时,为了增强安全性,可以定期刷新Session ID,或者设置合理的Session过期时间,避免长时间未操作的...

    JAVA之cookie与session

    1. **Session 的创建**:每当一个新的用户访问网站时,服务器会自动创建一个 Session 对象,并通过某种方式(如 Cookie)将一个唯一的 Session ID 发送给客户端。 2. **Session 的使用**:客户端将这个 Session ID ...

    cookie 和 session 保存的异同

    Cookie 和 Session 是两种常见的用户身份验证和会话管理机制,它们在Web开发中扮演着重要角色,用于跟踪用户的在线状态和存储用户数据。下面将详细阐述它们的异同以及如何在集群环境中进行共享。 首先,Cookie 是一...

    Cookie与Session的示例代码

    例如,登录验证可以先用Session存储用户信息,同时设置一个小型的Token型Cookie,作为Session的标识。这样即使用户关闭浏览器,再次打开时,服务器可以通过Cookie识别出之前的Session ID,实现“记住我”功能。 ...

    session与cookie的区别和联系?

    - 如果用户的浏览器禁用了Cookie,或者某些情况无法使用Cookie,可以采用URL重写等技术来实现Session ID的传递。 - 例如,可以在URL中加入Session ID参数,或者通过隐藏表单字段等方式来传递Session ID。 3. **...

Global site tag (gtag.js) - Google Analytics