发表于: 2017-10-06 22:47:32
1 801
今天完成的事情:
1.根据cookie是否存在而判断登录状态
控制器
@RequestMapping(value = "/login", method = RequestMethod.POST)
public ModelAndView login(@Param("username")String username,@Param("password")String password,HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException {
ModelAndView mv = new ModelAndView();
User realUser = null;
realUser = userService.selectUserByName(username);
if (realUser != null && realUser.getPassword().equals(password)) {
/* HttpSession session = request.getSession();
String cookieValue = userService.getCookieValueByName(request,username);
session.setAttribute("message", cookieValue);*/
String token = TokenUtil.makeToken(realUser.getId());
Cookie tokenCookie = CookieUtil.createCookie("token", token, 60 * 60);
response.addCookie(tokenCookie);
mv.setViewName("loginSuccess");
mv.addObject("username", realUser.getUsername());
return mv;
} else {
mv.setViewName("loginFail");
return mv;
}
}
拦截器
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
/*String session = (String) httpServletRequest.getSession().getAttribute("cookieValue");*/
Cookie cookie = CookieUtil.getCookieByName(httpServletRequest, "token");
if (cookie == null) {
httpServletRequest.getRequestDispatcher("/skip").forward(httpServletRequest, httpServletResponse);
return false;
}else
return true;
}
和昨天根据session判断大同小异,服务器就不弄了
2.总结了验证token的几种方法
①师兄提供的方法,将信息不可逆加密后比对
②JWT,将信息放到载体中加密,解密后根据载体中的时间、用户名等信息判断token是否有效
③搜索“token”后得出的结论,现在常见的做法是将token和用户info放到缓存中,若token验证通过,判断用户是登录状态并返回用户信息
官网给出的方法是des加密,并且是用户id + 时间戳,我思考了一下,官网的用意是解密后得到用户名再加上根据时间戳判断token是否有效,现阶段并没有需要那么复杂的做法
3.晚上尝试着根据官网给出的教程写加密util,失败了,然后以为自己写错了,复制了一遍过去,还是出错
明天计划的事情:
1.搜索其他加密资料,写出加密算法
2.加密密码,完成token验证
遇到的问题:
1.不知道token的验证方法
经过收集资料和请教师兄,现在已经解决了
2.按照教程编写加密工具类失败,到网上搜索错误信息,得不出解决方法
明天再看看怎么解决
收获:
学到了token的验证方案
进度:
任务5开始时间:2017.10.03
预计demo时间:2017.10.08
延期风险:无
http://task.ptteng.com/zentao/project-task-350.html
评论