发表于: 2017-11-15 22:57:39

1 794


今日完成的事情:

今天在注册模块加入了加盐功能,就是把用户注册的时候注册密码,加盐,存储到数据库当中。

加盐:在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。

加盐的方式:给原始密码加上特定的字符串。这里我是用的是随机产生10个字符组成字符串:

String salt= RandomStringUtils.random(10,true,true);

然后在和原始密码一起加密:

这样就完成了加盐。

加盐结果:

在数据库中存储就是这个样子。这里我犯了一个很愚蠢的错误。就是我在首次加盐的过程中没有把随机字符串保留下来。造成我登陆的时候没有办法登陆。

然后在注册模块:

@RequestMapping(value = "/user",method = RequestMethod.POST)
public String registerForm1(String name,String passWord, Model model){
   String salt= RandomStringUtils.random(10,true,true);
   Long time = System.currentTimeMillis();
   User user=new User();
   if(passWord=="" || name==""){
       model.addAttribute("msg","用户名或者密码不能为空");
       return "error";
   } else if (userService.getUser(name) != null) {
       model.addAttribute("msg", "用户名已存在");
       return "error";
   } else {
       String newPassWord = Md5Util.getMd5(Md5Util.getMd5(passWord)+salt);
       user.setPassWord(user.passWord);
       user.setName(name);
       user.setPassWord(newPassWord);
       user.setSalt(salt);
       user.setCreateUser(time);
       user.setUpdateUser(time);
       userService.addUser(user);
       return "redirect:/login";
   }

注册模块这里我又踩了一个坑,就是我在判断用户输入用户名和密码不能为空的时候,一开始用的是==null,但是试了好多次都不起作用,然后就是各种找原因,怎么也没有想到是这里出了问题,耽误好长时间。到最后无意之中才解决掉,在这里“”和null不相同,指的不是一个意思。

终于成功。

然后是token,token这个我还是不太理解,在吃饭的时候问了一下大佬,大佬给的解释听起来比较复杂,也没有听懂,反正自己理解的就是token可以是任何字符串。然后在网上扒了一张图片帮助自己理解:

在登陆页面加入了token,放入sessions:

@RequestMapping(value = "/login",method = RequestMethod.POST)
public String loginForm(String name, String passWord, HttpServletRequest request,Model model){
   User user=new User();
   if(userService.getUser(name)!=null){
       user=userService.getUser(name);
       if(user.getPassWord()==Md5Util.getMd5(Md5Util.getMd5(passWord)+user.getSalt())){
           UUID token=UUID.randomUUID();
           request.getSession().setAttribute("token",token);
           request.setAttribute("token",token);
           Object token1=request.getSession().getAttribute("token");
           String getToken=request.getParameter("token");
           if(token1==null){
               System.out.println("提交错误");
           }
           else if (!token1.equals(getToken)){
               System.out.println("提交错误");
           }else{
               System.out.println("提交成功");
               request.getSession().removeAttribute("token");
           }
           return "redirect:/test";
       }else {
           model.addAttribute("msg","密码错误");
           return "error";
       }
   }else {
       model.addAttribute("msg","该账户不存在");
       return "error";
   }
}

接下来就是拦截器。时间太晚了,明天继续。

明日计划的事情:

写拦截器,然后任务五也差不多了。

遇到的问题:

null和“”不相等。真的是耽误了我好久。

收获:

如何加盐,以及生成token存储到session当中。

任务开始时间:2017/11/14

预计完成时间:2017/11/18

延期:无

禅道:http://task.ptteng.com/zentao/my-task.html



返回列表 返回列表
评论

    分享到