发表于: 2017-10-07 16:27:35
1 797
今天完成的事情:
任务5的demo
着重说下任务5要实现的逻辑部分
注册登录部分:
首先是加盐逻辑:
@Override
public String setPasswordBySalt(String username, String password) {
String salt = username.substring(0, username.length() - 1);
String passwordToMd5 = MD5Util.getMd5(password);
String finalPassword = MD5Util.getMd5(passwordToMd5 + salt);
return finalPassword;
}
逻辑:密码使用Md5加密一次,加密过的密码加上用户名的(0~n-1)位再使用md5加密一次
注册部分:
效果:
密码皆是123456,但是在数据库中是不同的
登录加盐:
token部分:
生成token
生成逻辑:使用MD5工具加密(用户名+登录时间+“任意字符串”),然后使用DES工具加密(用户名+登陆时间+前面MD5生成的字符串),每个字符串之间用逗号“,”隔开以便后面分割字符串
校验token:
用户请求被拦截页面时,将cookie中的token取出,使用DES解密字符串,然后使用split函数将其分成三个字符串(用户名 + 登陆时间 + 密匙),再次使用生成token的算法将第一部分和第二部分生成校验字符串,若校验字符串与密匙相等,则校验成功;time<10000表示token失效时间只有10秒
获取token中的用户名
逻辑如上所述,用以在页面上显示类似“您好!XXX”
拦截器preHandle逻辑:在被拦截页面控制器执行之前,判断token是否为空,若为空,跳转到登录页面;若不为空,校验token。token校验有效且不过期,则执行页面控制器,否则跳转到登录页面
拦截器postHandle逻辑:在被拦截页变面的控制器执行完毕后改变ModelAndView,在session中添加一个名为username的变量
——————————————————效果展示分割线————————————————————
效果展示:
拦截效果
使用posthandle在页面中加入token中的用户名
10秒后token过期效果:
——————————————————效果展示分割线————————————————————
模仿验证失败:
正确的账号密码:
显示登录成功
转向/u/position,由于校验失败,拦截器拦截页面转向校验失败页面
这个效果说明一定程度上增加了token的安全性,但若增加一个拦截器,也可以用于权限访问
——————————————————效果展示分割线————————————————————————
至此,任务5完成
明天计划的事情:
1.完成任务5的深度思考
2.看了其他师兄任务5的日报,感觉他们学的东西很多,有很多东西都没怎么看完全版教程,只会用,先不做任务6了,先去把知识补足,例如JSP的详细内容与EL表达式等
遇到的问题:
问题前面都解决了,没遇到什么问题。
昨天遇到的问题是使用官网教程失败,但是不是教程的原因,是因为我点错把字节、字符串转换类先建成切面类,虽然后面改成class,但是还是不能用,将其删了,然后再写一次,就能用了
收获:
1.可以使用DES和MD5加密解密,但是原理感觉有点难,例如DES加密工具类,就是加入key,初始化加密类,doFinal,没了;而原理看得脑壳疼也看不懂,对字节什么理解太差了,感觉基础知识不够
2.自己封装了一个token工具类,以前对封装的概念没什么理解,现在有点了解了
3.可以使用拦截器的prehandle和posthandle
进度:
任务5开始时间:2017.10.03
预计demo时间:2017.10.08
任务于2017.10.07完成
禅道
http://task.ptteng.com/zentao/project-task-350.html
评论