发表于: 2017-05-06 23:18:53

1 1082


今天完成的事情:

写了一个拦截器,拦截下面的网址

/u/**

修改Task4中的两个页面,一个设为用户不登录可以访问,一个设为用户必须登录才可以访问。

要求用户必须登录才能访问的url统一增加前缀 /u/。

拦截器代码:

public class LoginInterceptor implements HandlerInterceptor {
private Logger log = Logger.getLogger(LoginInterceptor.class);
   @Autowired
   private StudentServiceImpl studentService;

   public boolean preHandle(HttpServletRequest httpServletRequestHttpServletResponse httpServletResponseObject o) throws Exception {
Cookie[] cookie=httpServletRequest.getCookies();
       if (cookie!=null){
for (int i=0;i<cookie.length;i++){
log.info(1);
               if (cookie[i].getName().equals("token")){
log.info(2);
                   System.out.println("进入判断");
                   log.info(3);
                   String token=cookie[i].getValue();
                   log.info(4);
                   byte[] tk= TypeUtil.hexStringToByte(token);
                   byte[] tk1= DesUtil.decrypt(tk,"12345678");
                   log.info(5);
                   String tk2=new String(tk1);
                   String id="";
                   String time="";
                   log.info(6);
                   for (int j=0;j<tk2.length();j++){
log.info(7);
                       char c=tk2.charAt(j);
                       if (c=='='){
for (int k=j+1;k<tk2.length();k++)
time=time+tk2.charAt(k);
                           log.info(8);
                           break;
                       }
id=id+c;
                   }
if (studentService.select(Long.parseLong(id))!=null){

return true;
                   }
}
}
}
httpServletRequest.getSession();
       String contextpath = httpServletRequest.getScheme() +"://" + httpServletRequest.getServerName() + ":" +httpServletRequest.getServerPort() +httpServletRequest.getContextPath();
       String uri=contextpath+"/student/login";
       httpServletResponse.sendRedirect(uri);
       return true;
}

public void postHandle(HttpServletRequest httpServletRequestHttpServletResponse httpServletResponseObject oModelAndView modelAndView) throws Exception {

}

public void afterCompletion(HttpServletRequest httpServletRequestHttpServletResponse httpServletResponseObject oException e) throws Exception {

}


明天计划的事情:

改掉bug,步入任务6

遇到的问题:

一切都写完了在跑得时候结果拦截类获取的token与controller生成的token不相匹配....开始以为没有生成token然后一步步的查发现有token的生成,然后又觉得是login方法有问题然后注掉拦截器....过了....现在觉得是字段属性问题.....然后改了之后

为什么这个又报错了!!!!!!!!!!!!!!!

收获:

通过和师兄们的讨论,对于加密与拦截更为熟悉,对于拦截器的理解更为深入...在这里还是要谢谢各位师兄的帮助~~~~



返回列表 返回列表
评论

    分享到