发表于: 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





返回列表 返回列表
评论

    分享到