发表于: 2017-08-17 23:30:20

1 991


今天完成的事情:

1. 把cookie写入代码中

2. 研究了下免登录

 


明天计划的事情:

1.session相关实现加入代码中

2.学习token,尝试在代码中使用

3.有时间就学习拦截器 过滤器 监听器



遇到的问题:

服务器是怎么判断同一域名下的两个cookie,例如有两个用户在同一网站进行了免登录的cookie,下次登陆时如何判断是哪一个用户,有可能发生本来是B用户登录,但是登上去发现是A的账户。


所以不允许同时有两个免登录,如果想换个账号,就必须退出登录,当前cookie作废,重新生成cookie。


收获:

把cookie写入代码中

                if(pass.equals(student.getPass())){

Cookie studentCookie = new Cookie("student",user+":"+pass);
                   studentCookie.setMaxAge(60*60*10);
                   studentCookie.setPath("/");
                   response.addCookie(studentCookie);
                   loggerController.info(studentCookie);
//                  OutputStream out = response.getOutputStream();

                   Cookie[] cookies = request.getCookies();
                   for(int i = 0;i<cookies.length;i++){
if("student".equals(cookies[i].getName())) {
String value = cookies[i].getValue();
                           String[] elements = value.split(":");
                           user = elements[0];
                           pass = elements[1];
                           loggerController.info("user-cookie: " + user);
                           loggerController.info("pass-cookie: " + pass);
                       }
}




2. 研究了下免登录

if(cookies!=null){
for(int i = 0;i<cookies.length;i++){
loggerController.info("cookies.length: "+ cookies.length);
       loggerController.info("cookies.getName(): "+ cookies[i].getName());
       if("student".equals(cookies[i].getName())){
String value = cookies[i].getValue();
           String[] elements = value.split(":");
           user = elements[0];
           pass = elements[1];
           loggerController.info("user: "+user);
           loggerController.info("pass: "+pass);
           try{
Student student = studyService.selectUser(user);
               if(pass.equals(student.getPass())) {
response.sendRedirect("/a/home");
               }
else{
out.write("<script language='javaScript'> alert('记录密码错误,请重新登陆');</script>".getBytes());
                   response.setHeader("refresh", "0;url=/a/login");
               }
}catch (Exception e){
e.printStackTrace();
               loggerController.info(e.getMessage());
               out.write("<script language='javaScript'> alert('请重新登陆');</script>".getBytes());
               response.setHeader("refresh", "0;url=/a/login");
           }
}

这个逻辑判断好费脑子和时间。


重点在于

studentCookie.setPath("/");

没有这个不同网页之间不能共享cookie,真坑



进度: 

         任务开始时间:8.14

         预计完成时间:8.18

         是否有延期风险:有,严重低估了任务5的知识量

 

禅道:http://task.ptteng.com/zentao/project-task-264.html






PS:感觉免登录必须和拦截器放在一起才有意义。




返回列表 返回列表
评论

    分享到