使用ssm框架完成自动登录功能

上一次讲了使用Javamail发送邮件,目的就是为了在项目中实现忘记密码的功能,这一次又碰到新的问题就是如何实现自动登录的功能,主要思想其实很简单,就是在将用户名和密码保存到cookie中,然后在显示首页的控制器中获取cookie中的账号,最后保存到session中,就和正常的登录效果是一样的了。
1.第一步,在登录的页面添加一个自动登录的选项:

<label> <input name="auto" type="checkbox" value="true"/>自动登录

2.第二步,在验证登录的控制器中加上选择自动登录的变量,如果该变量不为空,则将用户名和密码保存到session中:

//登录功能
    @RequestMapping(value = "/login")
    public ModelAndView check(@ModelAttribute("user") User user,@Param("auto") String auto,HttpSession session,HttpServletRequest request,HttpServletResponse response) {
        ModelAndView maviView = new ModelAndView("findall");
        //通过用户和密码找到user对象
        User user1 = loginRegServices.findUserByName(user, session, request);


        if (user1 != null) {


            //如果auto的值不为空,即选择了自动登录
            if (auto!=null) {
                //设置自动登录的时间为一个星期
                int seconds=7*24*60*60;
                //保存在Cookie中
                Cookie cookie=new Cookie("user", user.getUsername()+"=="+user.getPassword());
                cookie.setMaxAge(seconds);
                response.addCookie(cookie);
            }

            session.setAttribute("user", user1);
            return maviView;
        } else {
            maviView.addObject("err", "账户或密码错误");
            maviView.setViewName("login.jsp");
            return maviView;
        }
    }

3.第三步,在显示首页的控制器中获取cookie中的值,构造一个user对象,然后根据该对象找到数据库中用户的完整信息,保存到session

//首页的显示
    @RequestMapping(value="/findall")
    public ModelAndView blog_findall(HttpServletRequest request,HttpSession session)
    {
        Cookie cookie[]=request.getCookies();
        String[] cooks=null;
        if (cookie!=null) {
            for(int i=0;i<cookie.length;i++){
                Cookie c=cookie[i];
                    String userc=c.getValue();
                    cooks = userc.split("==");
                    if (cooks.length==2) {
                        String username=cooks[0];
                        String password=cooks[1];
                        User user=new User();
                        user.setUsername(username);
                        user.setPassword(password);
                        //通过此只用用户名和密码的user找到完整的user对象的信息,并保存在session
                        loginRegServices.autoLogin(user, session, request);
                    }
            }
        }

        ModelAndView mav=new ModelAndView("index.jsp");
        mav.addObject("book",bookService.findall());
        mav.addObject("bookone",bookService.findallone());
        mav.addObject("booktwo",bookService.findalltwo());
        mav.addObject("bookthree",bookService.findallthree());
        mav.addObject("bookhotcomment",bookService.findhotcomment());
        mav.addObject("findpublish",bookService.show_publish());
        mav.addObject("zhuantione", bookService.showzhuantione());
        mav.addObject("publishList", bookService.findAllPublish());
        //mav.addObject("zhuantione", bookService.showzhuantitwo());
        return mav;
    }

4.保存到session的方法如下:

//自动登录
      public void autoLogin(@ModelAttribute("user") User user,HttpSession session,HttpServletRequest request){
           User user1 =userMapper.selectByUsername(user.getUsername());

         if(user1 !=null && user1.getPassword().equals(user.getPassword())){
              session.setAttribute("user", user1);
           }

        }

是不是非常的简单呢,哈哈哈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值