发表于: 2017-11-03 23:23:09

1 875


今天完成的事情:

登录接口;  

根据用户输入的账户查找密码,然后与用户输入的密码进行匹配,,登录成功后将用户账户密码使用MD5加盐存入Cookie,

然后将用户登录的时间和账户进行des加密 存为Token.

  @RequestMapping(value = "/login/v", method = RequestMethod.POST)
public String selectUserName(HttpServletRequest request, HttpServletResponse response, Model model, String userName) {
try {
//            数据库查找到的密码
           String userKey = studentService.selectUser(request.getParameter("userName"));
           loggerController.info("根据用户输入的账号找到数据库的密码"+ userKey);
//            用户输入的密码
           String userPassword = request.getParameter("userPassword");
           if (userKey.equals(userPassword)) {
//                将两者md5加盐加密存入cookie
               Cookie cookie = new Cookie(Md5Salt.generate(userName), Md5Salt.generate(userPassword));
               cookie.setMaxAge(60 * 60 * 24 * 7);
               cookie.setPath("/");
               response.addCookie(cookie);
               loggerController.info("md5加盐的cookie" + cookie);
//                将用户账户 和登录时间加密生成Token放入Cookie

               long time = System.currentTimeMillis();
               String result = String.valueOf(time) + ":" + userName;
               Cookie cookie1 = new Cookie("token", desUtil.encrypt(result));
               cookie1.setMaxAge(60 * 60 * 24 * 7);
               cookie1.setPath("/");
               response.addCookie(cookie1);
               loggerController.info("cookie的信息"+cookie1.getPath());
               loggerController.info("des加米的token" + cookie);
               response.setHeader("refresh", "0;url=/a/home");
               return "/common/jump";
           }
} catch (Exception e) {
e.printStackTrace();
           loggerController.error(e.getMessage());
       }
return "/regist/regist";

登录验证接口;用户带着token访问后,对用户的token进行Des解密,然后拆分为账户密码.

@RequestMapping(value = "/login")
public String enter(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, String userName, String userPassword) throws Exception {

String token = CookieUtile.getCookieValue(httpServletRequest, "token");
   String s1 = null;
   String s2 = null;
   if (token != null) {
String mes = desUtil.decrypt(token);
       String[] array = mes.split(":");
       s1 = array[0];
       s2 = array[1];
       loggerController.info("登录时间:" + s1);
       loggerController.info("账户" + s2);
       httpServletResponse.setHeader("refresh", "0;url=/a/home");
           return "/common/jump";
   }
else { return "/regist/regist";}
}

更改拦截器...

将一个页面设置为不用登录可以访问,另外一个需要登录访问.

删除Cookie

    public static  void  cleanCookie(HttpServletRequest request,HttpServletResponse response, String path){
Cookie[] cookies = request.getCookies();
       try
       {
for(int i=0;i<cookies.length;i++)
{

Cookie cookie = new Cookie(cookies[i].getName(), null);
               cookie.setMaxAge(0);
               cookie.setPath(path);
               //根据你创建cookie的路径进行填写
               response.addCookie(cookie);
           }
}catch(Exception e)
{
e.printStackTrace();

       }
}
}
@RequestMapping(value = "/u/login/exit",method = RequestMethod.GET)
public String exit(HttpServletRequest request, HttpServletResponse response) {
String path = "/";
   CookieUtile.cleanCookie(request, response, path);
   return  "/regist/regist";}


将后面两个分别设置为学生列表和退出登录.

 在浏览器输出字符串.

将项目部署到服务器.修改log4j输出日志位置, 又出现无法加载静态图片情况.

提交任务5.  


明天计划完成的事情:

开始任务6,


遇到的困难:

出现了和之前一样的问题,没有输入账户密码自动登录,,我和师兄冷静分析了两个小时之后,,,认为是工具类问题,,,甚至还重新建立一个Cookie来证明......最后发现设置路径cookie的位置错了...


收获:

String mes = desUtil.decrypt(token);
       String[] array = mes.split(":");
       s1 = array[0];
       s2 = array[1];
       loggerController.info("登录时间:" + s1);
       loggerController.info("账户" + s2);

拆分token,将一个数组里面内容拆分出来,分别赋值.

在浏览器输出内容.


任务进度:任务6步骤1

任务开始时间:2017-11-4

预计demo时间:2017-11-12

是否有延期风险:暂无

禅道:http://task.ptteng.com/zentao/task-view-12737.html




返回列表 返回列表
评论

    分享到