发表于: 2017-05-06 23:18:53
1 1083
今天完成的事情:
写了一个拦截器,拦截下面的网址
/u/**
修改Task4中的两个页面,一个设为用户不登录可以访问,一个设为用户必须登录才可以访问。
要求用户必须登录才能访问的url统一增加前缀 /u/。
拦截器代码:
public class LoginInterceptor implements HandlerInterceptor {
private Logger log = Logger.getLogger(LoginInterceptor.class);
@Autowired
private StudentServiceImpl studentService;
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object 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 httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
明天计划的事情:
改掉bug,步入任务6
遇到的问题:
一切都写完了在跑得时候结果拦截类获取的token与controller生成的token不相匹配....开始以为没有生成token然后一步步的查发现有token的生成,然后又觉得是login方法有问题然后注掉拦截器....过了....现在觉得是字段属性问题.....然后改了之后
为什么这个又报错了!!!!!!!!!!!!!!!
收获:
通过和师兄们的讨论,对于加密与拦截更为熟悉,对于拦截器的理解更为深入...在这里还是要谢谢各位师兄的帮助~~~~
评论