Java Web操作Cookie实现自动登陆小demo

controller的代码

@Controller
public class UserController{
	@Autowired 
	 private IUserService userService;
	/**
	  * 转入登陆页面
	  * author: YHR
	  * @return
	  */
	 @RequestMapping("/tologin")
	 public String login(HttpServletRequest req,HttpServletResponse resp) {//登录的请求
	 	 //需要读取当前硬盘的Cookie信息,如果有则跳过登录。
	  	Cookie[] cs=req.getCookies();//读取当前硬盘的所有cookie
	  	System.out.println(cs.length+"-==-======================");
	  	User user = new User();
	  	for(Cookie c: cs) {
	       		if ("username".equals(c.getName())) {
	    	  	      user.setUsername(c.getValue());  // 得到cookie的用户名
	      	        }
	      		if ("password".equals(c.getName())) {
	      	    	      user.setPassword(c.getValue()); // 得到cookie的密码
	     		}
	 	 }
	 	 if(this.userService.selectByLogin(user) != null){ 
	   		return "redirect:list.action";
		 }else{
	   		return "login"; 
	  	}	
	}	
	@RequestMapping("/login")
	public String login(User u,HttpSession session,Model model,HttpServletResponse resp,@RequestParam(defaultValue="0") Integer flag) {//登录的处理
	    	 User bean= this.userService.selectByLogin(u);
	     	 if(bean!=null) {//登录成功,保存到session中
	       		session.setAttribute("logUser", bean);
	       
	      		if(flag == 1) {//判断是否选择了自动登录:记住我
	        		System.out.println(flag);//1
	         		//创建Cookie
	     			Cookie c1=new Cookie("username",bean.getUsername());
			        Cookie c2=new Cookie("password", bean.getPassword());
			        Cookie c3=new Cookie("uid",String.valueOf(bean.getId()));
			        //设置有效期
			        c1.setMaxAge(60*60);
			        c2.setMaxAge(60*60);
			        c3.setMaxAge(60*60);
			        //保存cookie到客户端
			        resp.addCookie(c1);
			        resp.addCookie(c2);
			        resp.addCookie(c3);
			}
		        return "redirect:list.action";//返回到主页面(tree:权限树)
	    	 }else {
	      		model.addAttribute("error", "对不起,登录失败!");
	   	 	return "login";
	   	 }
	}
}

当访问登陆页面时,先判断cookie中有没有所要的属性,如果有,直接判断账户密码是否正确,进入主页

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值