发表于: 2017-11-19 13:03:43
1 614
今天完成的事
把昨天的代码接着敲了点。
昨天是比对密码之后访问profession页面。
今天使他带着token去访问。cookie无误才可以进入。
@RequestMapping(value = "/profession",method = RequestMethod.GET)
public String ListProfession(Model model, HttpServletRequest request){
//鉴定tookn是否一致,先取出cookie
Cookie[] cookies = request.getCookies();
logger.info(cookies);
if (cookies != null){
//找到和Token一样名字的Token
cookies[1].getName().equals("Token");
}
写到这就有点烦。用户的登录时间如果用来确认登陆的话,那和我的密码应该是一样的道理。
但是cookies里面的时间是和名字加密的,我解密了是一个字符串,我用这个字符串和这个用户的名字和时间做对比,问题是我怎么拿到当前的名字,但我没有名字就拿不到时间啊。拿不到时间我就拼不上完整的字符串啊。没有完整的字符串我就不能和cookie对比啊,死循环。
明天再搞。
拦截器里通过Cookie中判断Token的有效性来判断用户
↑未完成。
【准备小课堂】
就顺便看了点springAOP的知识。
其实springAOP的底层实现原理也是一个动态代理。
spring的动态代理也是分两种。
这个动态代理一直在服务spring。以前只知道这么个东西没怎么仔细研究。
jdk动态代理和CGLIB代理
JDK动态代理
此时代理对象和目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,可以在调用目标对象相应方法前后加上其他业务处理逻辑。
代理模式在实际使用时需要指定具体的目标对象,如果为每个类都添加一个代理类的话,会导致类很多,同时如果不知道具体类的话,怎样实现代理模式呢?这就引出动态代理。
JDK动态代理只能针对实现了接口的类生成代理。
这个就是给接口代理了一个类。
CGLIB代理
这个相当于给父类代理出来一个子类
CGLIB(CODE GENERLIZE LIBRARY)代理是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的所有方法,所以该类或方法不能声明称final的。
如果目标对象没有实现接口,则默认会采用CGLIB代理;
如果目标对象实现了接口,可以强制使用CGLIB实现代理(添加CGLIB库,并在spring配置中加入<aop:aspectj-autoproxy proxy-target-class="true"/>)。
AOP包括切面(aspect)、通知(advice)、连接点(joinpoint),实现方式就是通过对目标对象的代理在连接点前后加入通知,完成统一的切面操作。
遇到的问题
周末好懒散啊。。。。一转身就没了。
收获
明天的计划
新的一周~开始赶进度!
评论