发表于: 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的安全性,但若增加一个拦截器,也可以用于权限访问

——————————————————效果展示分割线————————————————————————


效果详见www.summerwaves.cn

至此,任务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





返回列表 返回列表
评论

    分享到