发表于: 2017-11-19 13:03:43

1 616


今天完成的事

把昨天的代码接着敲了点。

昨天是比对密码之后访问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),实现方式就是通过对目标对象的代理在连接点前后加入通知,完成统一的切面操作。

遇到的问题

周末好懒散啊。。。。一转身就没了。

收获

明天的计划

新的一周~开始赶进度!


返回列表 返回列表
评论

    分享到