发表于: 2018-01-04 21:45:26

1 544


今日完成

1.学习拦截器

(1)先上一波理论

Java中常见的AOP技术有两个,分别是Filter和代理模式(也可以称为过滤器和拦截器),Filter是基于回调函数(请看《Java回调机制解析》),代理模式是基于Java反射技术,代理模式又分为静态代理和动态代理,动态代理就是拦截器的简单实现。

(2)知道了拦截的原理是基于AOP的,然后就看怎么实现拦截器了。拦截器实现了handlerinterceptor 的方法

需要重写其中的三个方法,原理和aop很像,一个实在执行hangdler之前,一个实在modleandview之前,一个实在执行结束之后。可以用来统一收集异常日志,系统运行日志。

(3)这个有几个需要注意的地方

执行preHandle是顺序执行。

执行postHandle、afterCompletion是倒序执行

如果preHandle不放行,postHandleafterCompletion都不执行

只要有一个拦截器不放行,controller不能执行完成

(4)可以将需要认证的部分写在postHandle 的方法里面。(这里逻辑还没有理顺,所以这部分还没有写)

(5)再写登录请求的部分

在登陆时使用相应的加密算法。

2.完成加密工具的部署

(1)强随机数生成器的使用(用来生成盐值用于加密用户的密码)

 */
public class SaltGenerate {

public static String getSalt(){

Random ranGen = new SecureRandom();
       byte[] aesKey = new byte[10];
       ranGen.nextBytes(aesKey);
   
       StringBuffer hexString = new StringBuffer();
       for (int i = 0; i < aesKey.length; i++) {
String hex = Integer.toHexString(0xff & aesKey[i]);
           if (hex.length() == 1)
hexString.append('0');
           hexString.append(hex);
       }
String  salt = hexString.toString();
       return salt;
       
   }
}

(2)再写一个SHA256的加密工具

public class MessageDigestUtils {
public static String SHA256(String message){
MessageDigest md = null;
       String outStr = null;
       
       try {
md = MessageDigest.getInstance("SHA-256");
           byte[] digest = md.digest(message.getBytes());
           outStr = byteToString(digest);
       } catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
       }
return outStr;
   }

private static String byteToString(byte[] digest) {
StringBuilder buf = new StringBuilder();
       for (int i = 0; i < digest.length; i++) {
String tempStr = Integer.toHexString(digest[i] & 0xff);
           if (tempStr.length() == 1) {
buf.append("0").append(tempStr);
           } else {
buf.append(tempStr);
           }
}
return buf.toString().toLowerCase();
   }


}

测试了一下生成的随机数+密码(12345)在进行哈希加密算法得到的数据

(3)在登录的controller里面写生成cookie的方法,以及将相应的值放在cookie中。

(4)测试登录可以看到在浏览器中保存了cookie.使用aaa登录产生的cookie




明日计划

1.完成任务5的内容,在熟悉一下cookie和session的用法和原理。

遇到问题

1.没有理解到任务的逻辑。

收获

1.加密工具的使用

2.cookie的使用


返回列表 返回列表
评论

    分享到