Cookie技术[登录成功, 添加用户信息到Cookie, 页面"记住我"]

1. login.jsp

<form name="form1" method="post" action="${pageContext.request.contextPath}/sys/sysUserAction_isLogin.do">
    用户名:<input name="name" type="text" value="<%=name %>" id="name"/>
    密码:<input name="password" type="password" value="<%=password %>" id="password">  
记住我:<input name="rememberMe" type="checkbox" id="rememberMe" value="yes" class="checkbox" <%=checked %>>
按钮 }

2. action

	// 用户登录校验
	public String isLogin() {
		String loginFailure = "loginFailure";
		// 校验验证码
		boolean flag = SessionUtils.isCheckNum(request);
		if (!flag) {
			this.addFieldError(loginFailure, "验证码输入有误!请重新输入!");
			return "login";
		}
		// 校验用户名和密码
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		SysUser sysUser = sysUserService.findSysUserByNameAndPassword(name, password);
		if (sysUser == null) {
			this.addFieldError(loginFailure, "用户名或密码错误 !");
			return "login";
		}
		
		// 登录成功, 把用户信息存入session
		SessionUtils.setSysUserToSession(sysUser, request);
		
		// 处理Cookie
		this.addCookie(name, request.getParameter("password"));
		
		return "main";
	}
	// 创建Cookie
	private void addCookie(String name, String parameter) {
		// 1.创建cookie
		Cookie nameCookie = new Cookie("name", name);
		Cookie pwdCookie = new Cookie("password", request.getParameter("password"));
		
		// 2.设置cookie的路径到 http://localhost:8080/crm/, 否则在登录页面将访问不到cookie, 就无法回写用户信息
		nameCookie.setPath(request.getContextPath() + "/");
		pwdCookie.setPath(request.getContextPath() + "/");
		
		// 3.判断是否勾选了"记住我"复选框
		String rememberMe = request.getParameter("rememberMe");
		if (StringUtils.isBlank(rememberMe)) {	// 不保存cookie
			nameCookie.setMaxAge(0);
			pwdCookie.setMaxAge(0);
		} else {	
			// 4.保存cookie
			nameCookie.setMaxAge(7*24*60*60);
			pwdCookie.setMaxAge(7*24*60*60);
		}
		// 5.添加cookie到响应头
		response.addCookie(nameCookie);
		response.addCookie(pwdCookie);
	}

效果: 登录一次, 记住我, 之后在cookie的生命周期内请求到登录页面都自动加载用户名和密码

      

 

posted @ 2017-05-28 12:33  半生戎马,共话桑麻、  阅读(216)  评论(0)    收藏  举报
levels of contents