当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

用cookie和session实现自动登录

发表于: 2014-09-17   作者:陈静静2014   来源:转载   浏览:
摘要: 算是今天的学习笔记吧。。。 在点击登录输入用户名和密码后,当验证用户名和密码都正确且有正确返回值时,在LoginSvl中创建一个cookie保存此用户名和密码: String unamepwd = user.getUname()+","+user.getPwd(); Cookie cookie=new Cookie("unamepwd",una
算是今天的学习笔记吧。。。
在点击登录输入用户名和密码后,当验证用户名和密码都正确且有正确返回值时,在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;
	}

用cookie和session实现自动登录

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
写个过滤器要对登录页面进行过滤,如果session为空,则去cookie中去寻找相关的信息,如果找到了则加
一. 本程序要实现的功能 第一次登录页面时,若在表单中选择了“记住密码”,则下次登录网站时不用
5 进行session和cookie分析 ,并在前后区分session和cookie; 记住登录状态 这样下次再登录网站的时
上一篇博文中,讲到用cookie实现简单的购物车,但是有的用户,会因为不小心把cookie给禁止了,如果
0.背景 最近项目中在做一个平台性质的东西,为其他业务系统提供某种服务,方式是向业务系统提供ifram
0.背景 最近项目中在做一个平台性质的东西,为其他业务系统提供某种服务,方式是向业务系统提供ifram
同时使用session和cookie来保存用户登录信息 1、数据库连接配置页面:connectvars.php <?php //&
  经过前面几节的练习,我们已经熟悉了django 的套路,这里来实现一个比较完整的登陆系统,其中包
session和cookie是网站浏览中较为常见的两个概念,也是比较难以辨析的两个概念,但它们在浏览需要认
Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 Session的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号