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

版权声明:作者:大葡萄 版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_42460420/article/details/85127332

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中有没有所要的属性,如果有,直接判断账户密码是否正确,进入主页

展开阅读全文

没有更多推荐了,返回首页