发表于: 2017-11-18 20:03:18
2 666
1;生成token,根据构成,加工调用就行
对比下,没用token之前是可以看到信息,用了之后被加密成字符串…..
2;对密码加密…直接用了…md5….
注册时加密
//注册页面
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String register(Student student)
{
student.setCreate_at(System.currentTimeMillis());
student.setPassword(Md5Util.getMd5(student.getPassword()));
studentService.register(student);
return "redirect:/login";
}
登陆传值加密
if (root.getUser() != null && root.getPassword() != null) {
root.setPassword(Md5Util.getMd5(root.getPassword()));
Student student = studentService.login(root);
3;本来拦截器写好了,不符合师兄验收标准,要扩展;主要就是增加,关闭session之后,新建会话,在没有sessionid的时候,根据数据库的信息比对是否时正确的用户;
首先取出token的值,因为是根据登录时间以及id生成的;也就是一个字符串,所以设置的时候中间加上逗号隔开;
String str = student.getLogin_at() + "," + student.getId();
然后获得token的值,解密得到为拼接的字符串
DesUtil des = new DesUtil("java");
String information = des.decrypt(cookie.getValue());
然后是调用方法,以逗号为分割,分别获取前后两部分也即是登录时间和id
String[] info = information.split(",");
然后是通过数组取出数据,
Long login_at = Long.valueOf(info[0]);
int id = Integer.valueOf(info[1]);
分别与数据库的用户信息匹配,如果一致,就返回true通过拦截器…
if (login_at == student.getLogin_at()){
student.setLogin_at(System.currentTimeMillis());
studentService.update(student);
4;路径问题也说一下,绝地路径不建议,
换一下
区别,绝对路径,随着不同的Web应用发布方式,绝对路径的值也不同,而为了解决不同部署方式的差别,只需要加上page….. 作用是取出部署的应用程序名,这样不管如何部署,所用路径都是正确的。
5;小课堂内容就不水了……
明日计划的事情:
1;完善小课堂
2;学习连接池,以及日志等零碎知识点
3;了解新任务的概念知识
遇到的问题及解决方法:
1;扩展部分,判断时间一直有误差….
调试过之后发现,登陆时候设置登录时间,写到了生成token之后…这样每一次生成的token都是……用的上一次的登陆时间……修改为上面.先更新登录时间,然后加密生成token,这样比对就不会差一次登录时间了……
student.setLogin_at(System.currentTimeMillis());
studentService.modify(student);
DesUtil des = new DesUtil("java");
String str = student.getLogin_at() + "," + student.getId();
String token = des.encrypt(str);
又一次犯错误……上次是设置cookie时间,没注意位置….放到addcookie下面了……无法生效……以后多注意这些细节问题…
cookie.setMaxAge(60 * 60 * 24);
response.addCookie(cookie);
request.getSession().setAttribute("Token", token);
2;仍然是扩展部分的问题,写好之后一直匹配信息不对…
DesUtil des=new DesUtil("java");
String [] info=des.decrypt(cookie.getValue()).split(",");
这样写是先拿到加密后的token……然后根据逗号分开,这个时候应该是没法分的吧……加密后是一串,没有逗号……所以暂时改成了,先整体解密,然后再取出数组,这样就没问题了…
String information = des.decrypt(cookie.getValue());
String[] info = information.split(",");
Long login_at = Long.valueOf(info[0]);
int id = Integer.valueOf(info[1]);
之后又感觉不对……上面那种方法仔细看也是对的……因为方法split()也是在解密之后用的………不知道当时为什么有问题……但是两种解密取出前后的内容,是一致的,没问题…………
收获:
1;完成加密知识
2;完成小课堂部分内容
3;完成任务,提交任务
评论