发表于: 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;完成任务,提交任务


 

 

 



返回列表 返回列表
评论

    分享到