发表于: 2020-05-15 23:09:54

1 1336


今天完成的事情:


昨天找的des加密代码有问题

今天重新找了des加密代码

代码太长不贴了.. 测试都成功了


重写了注册


对输入的密码用MD5进行加密加盐



@RequestMapping(value = "/register",method = RequestMethod.POST)
public  String register(account account){

logger.info("传入对象为:"+account);

   String u = account.getUsername();
   String p = account.getPassword();

   logger.info("输入的账户为:"+ u+"密码为"+p);

   //判断输入的用户名是否为空 或者  空字符
   if(u!=null && u!=""){

//判断数据库中是否有此用户名
         account accountA = accountService.findAccount(u);

           //如果查询出的账户id为空(代表用户不存在),才能注册
           if(accountA ==null){

try{

//对传入的密码用MD5进行加密加盐
                   String MD5Password = MD5Util.generate(p);

                   //设置密码为新密码
                   account.setPassword(MD5Password);

                   //插入数据
                   int id = accountService.addAccount(account);

                   System.out.print("注册成功,请登录");
                   //返回到登录页面
                   return "loginPage";

               }catch (Exception e){
System.out.print("注册失败,请重新填写注册信息");
                   return "registerPage";
               }

}else {
System.out.print("用户名已经存在,请更换用户名");
               return "registerPage";
           }

}else{
System.out.print("用户名不能为空");
       return "registerPage";
   }
}


注册看下结果



MD5  对密码进行了加密加盐


这样就算别人看到你的数据库内容,也看不到密码内容了。






按任务要求修改了login 登录代码


代码

  @RequestMapping(value = "/login",method = RequestMethod.POST)
public String login(account account, HttpServletResponse response) throws Exception{

logger.info("输入的表格数据为为:" +account);
       String u = account.getUsername();
       String p = account.getPassword();

       logger.info("取出account账号为"+u+"---------"+"取出account密码为"+p);

       //判断输入的用户名是否为空 或者  空字符
       if (u != null && u != "") {

logger.info("用户名通过");

            account accountB = accountService.findAccount(u);

            logger.info("查询出的内容为:"+accountB);

           //判断数据库中是否有此用户名
           if (!ObjectUtils.isEmpty(accountB)) {

logger.info("用户不为空");

               //验证输入的密码和  加密加盐后的MD5密码是否相同  相同就返回true
               if(MD5Util.verify(p,accountB.getPassword())==true) {

logger.info("密码正确");

                   //对此用户id进行des加密
                   String id = des.encryptFromLong(accountB.getId());
                   logger.info("对用户id加密的结果为========" + id);

                   //对当前时间进行des加密
                   String loginTime = des.encryptFromLong(System.currentTimeMillis());
                   logger.info("对时间加密的结果为========" + loginTime);

                   //对用户id和登陆时间一起进行des加密
                   String token = des.encrypt(id + "|" + loginTime);
                   logger.info("对用户id和登陆时间加密的结果(token)为========" + token);

//                  创建2cookie赋值
//                    Cookie nameCookie = new Cookie("name",u);
                   Cookie tokenCookie = new Cookie("token", token);


//                  设置cookie存在时间
//                    nameCookie.setMaxAge(30*60);
                   tokenCookie.setMaxAge(30 * 60);

//                   向客户端返回cookie
//                    response.addCookie(nameCookie);
                   response.addCookie(tokenCookie);
                    System.out.print("登陆成功,正在进入主页面");
                   return "homePage";

               }else {
System.out.print("密码错误,请重新输入");
                   return "loginPage";
               }

} else {
System.out.print("用户不存在,请重新输入用户名");
               return "loginPage";
           }

} else {
System.out.print("用户名不能为空!");
           return "loginPage";
       }

}


对应的是这个要求




用des先对用户id   当前时间进行了加密   



然后把token放cookie里    返回给了客户端




登录时,因为我们的密码已经经过MD5加密了

所有需要用md5工具类的 verify方法  

判断输入的用户密码(明文密码)   和查询出的密码(加密加盐的密码) 是否相同




根据前面注册的用户名密码   登录试试把




登录成功!




增加了注销功能

cookie时间设为0就行

    //注销按钮
   @RequestMapping(value = "/logout", method = RequestMethod.GET)
public String logout(HttpServletResponse response, HttpServletRequest Request) {
//创建一个cookie对象,得到cookie
       Cookie[] cookies = Request.getCookies();
       //先取出cookie
       for (Cookie cookie : cookies) {
//如果存在nametokencookie,则取出并修改token的时效为0
           if (cookie.getName().equals("token")) {
cookie.setMaxAge(0);
               logger.info("被删除的token" + cookie.getName());
               response.addCookie(cookie);
               return "homePage";
           }
}
return "homePage";
   }
}




明天计划的事情:


完善代码




任务深度思考 





返回列表 返回列表
评论

    分享到