发表于: 2017-11-15 22:57:39
1 795
今日完成的事情:
今天在注册模块加入了加盐功能,就是把用户注册的时候注册密码,加盐,存储到数据库当中。
加盐:在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。
加盐的方式:给原始密码加上特定的字符串。这里我是用的是随机产生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
评论