发表于: 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:感觉免登录必须和拦截器放在一起才有意义。
评论