登录信息和Cookie处理

简介:

       对于经常访问的论坛,社区网站,如果每一次在自己电脑上浏览的时候就得输入用户名和密码,这样就非常麻烦。对于大多数除了关乎经济,个人隐私,信息安全等比较重要的网站外的大多数站点都提供了一个供用户选择是否记录用户名和密码的选择框,而且还附带着时间期限。

       如果电脑只是自己私用,这样的功能当然是非常方便的;如果是共用的话那么最好在浏览器的Inertnet选项中将Cookies删除,或者选择退出删除浏览记录就可以了。

      为了一探究竟,Cookie是怎样方便我的登录,于是做了一个模拟。

 

      第一步:

     编写一个登录页面:

 作为登录页面为了更好的观察密码是否被保存使用了普通的文本框。设置的用户名为:“aiilive”密码为:“51cto”

 
  1. <%  
  2.     out.println("用一个时间戳来证明Cookie的存在:"+new Date().toString());  
  3.      %> 
  4.     <body> 
  5.         <form action="servlet/CookieServlet" method="post"> 
  6.             <table border="1"> 
  7.                 <tr> 
  8.                     <td> 
  9.                         User:  
  10.                     </td> 
  11.                     <td> 
  12.                         <input type="text" id="user" name="user" value="${sessionScope.user}"/> 
  13.                     </td> 
  14.                 </tr> 
  15.                 <tr> 
  16.                     <td> 
  17.                         Password:  
  18.                     </td> 
  19.                     <td> 
  20.                         <input type="text" id="password" name="password" value="${sessionScope.password}" /> 
  21.                     </td> 
  22.                 </tr> 
  23.                 <tr> 
  24.                     <td colspan="2" align="center"> 
  25.                         <input type="submit" id="Submit" name="Submit" value="Submit" /> 
  26.                     </td> 
  27.                 </tr> 
  28.             </table> 
  29.         </form> 
  30.     </body> 

     第二步:

    编写初始化登录页面的serlvet.

 

 
  1. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  2.             throws ServletException, IOException {  
  3.         response.setContentType("text/html");  
  4.         response.setCharacterEncoding("GB2312");  
  5.         HttpSession htSession=request.getSession();  
  6.         String user="";  
  7.         String password="";  
  8.         Cookie[] cos = request.getCookies();  
  9.         String tagString="tag";  
  10.         if (cos != null) {  
  11.             String name;  
  12.             for (int i = 0; i < cos.length; i++) {  
  13.                 name=cos[i].getName();  
  14.                 if(name.equals("http://aiilive.blog.51cto.com/username")){  
  15.                     user=cos[i].getValue();  
  16.                     tagString=tagString+"[user:"+user+",";  
  17.                 }if(name.equals("http://aiilive.blog.51cto.com/passWord")){  
  18.                     password=cos[i].getValue();  
  19.                     tagString=tagString+"password:"+password+"]";  
  20.                 }  
  21.             }  
  22.         }   
  23.         htSession.setAttribute("user", user);  
  24.         htSession.setAttribute("password", password);  
  25.         htSession.setAttribute("tagString", tagString);  
  26.         response.sendRedirect("../login.jsp");  
  27.     } 

    1.获取指定网站的Cookie信息,即登录信息

  现将实验中生成的Cookie删除掉:

   

 查看生成的Cookies

 删除掉已有的Cookies

 2.在登录页面上显示

           如果不存在登录的Cookie信息则登录框为空,什么都不现实,为了模拟这里显示“空格”

 

 

填写登录信息:

 

 

提交信息将显示信息信息:

 当前的Cookie中没有存储用户的登录信息

如果存在登陆的Cookie信息则登录框中显示用户名密码,用户直接登录

 

 

提交之后将显示:

 

   表示Cookie中存储了用户登录信息

  重新生成Cookies。

第三步:

    当页面提交的时候,应该通过增加或者修改Cookie来保存信息,如果用户的登录信息已经在Cookie中存在,则不再添加,如果修改或者不存在则添加Cookie信息。

       

 
  1. public void doPost(HttpServletRequest request, HttpServletResponse response)  
  2.             throws ServletException, IOException {  
  3.  
  4.         response.setContentType("text/html");  
  5.         response.setCharacterEncoding("GB2312");  
  6.         HttpSession htSession=request.getSession();  
  7.         String user = request.getParameter("user");  
  8.         String password = request.getParameter("password");  
  9.         String cookieString="tag[user:"+user+",password:"+password+"]";  
  10.         if(!htSession.getAttribute("tagString").toString().trim().equals(cookieString)){  
  11.             Cookie coUserName = new Cookie(  
  12.                     "http://aiilive.blog.51cto.com/username", user);  
  13.             coUserName.setMaxAge(30 * 24 * 60 * 60);  
  14.             Cookie coUserPassword = new Cookie(  
  15.                     "http://aiilive.blog.51cto.com/passWord", password);  
  16.             coUserPassword.setMaxAge(30 * 24 * 60 * 60);  
  17.             response.addCookie(coUserName);  
  18.             response.addCookie(coUserPassword);  
  19.         }  
  20.         if(user.equals("aiilive")&&password.equals("51cto")){  
  21.             response.sendRedirect("../welcome.jsp");  
  22.         }else{  
  23.             response.sendRedirect("../login.jsp");  
  24.         }  
  25.     }  

     保存登录信息到本地当然是非常方便的做法,但是这必须保证电脑属于自己的专属,不然往往会引起不必要的麻烦。如果有关于银行账户信息,支付宝,电子口令等等这些信息自然坚决不能存在本地计算机,当然更不能存放在网络上。在互联网迅猛发展的同时,我们的信息安全也面临这巨大的风险,每一次互联网上的活动,都是个人信息安全的一次降级。

    使用Cookie的地方还是非常多的,不过对于不同的项目,不同的环境,不同的安全性要求,不同的应用必须慎重考虑,系统的安全性在现如今的网络时代已经成为不可轻视的部分。



本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/861941,如需转载请自行联系原作者

相关文章
|
6月前
一个困扰几天的难题 cookie 登录
一个困扰几天的难题 cookie 登录
30 0
|
1月前
|
数据采集 存储 安全
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
登录态数据抓取:Python爬虫携带Cookie与Session的应用技巧
|
3月前
|
存储 JSON 算法
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
登录认证-登录校验-会话技术方案选择和对比(cookie、session和JWT令牌)
|
10月前
|
存储 缓存 JSON
36.从入门到精通:CGI环境变量 GET和POST方法 GET方法 POST方法 CGI中使用Cookie Cookie设置 检索Cookie信息
36.从入门到精通:CGI环境变量 GET和POST方法 GET方法 POST方法 CGI中使用Cookie Cookie设置 检索Cookie信息
|
5月前
利用cookie进行登录
利用cookie进行登录
45 0
|
8月前
|
JSON NoSQL Redis
cookie 免密登录了解一下
cookie 免密登录了解一下
cookie 免密登录了解一下
|
10月前
|
NoSQL JavaScript 关系型数据库
【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)
【Node.js实战】一文带你开发博客项目之登录(对接完毕,cookie、session、redis各司其职)
109 0
|
10月前
|
存储 JSON 前端开发
【JavaEE】Cookie与Session的前后端交互-表白墙登录设计
就是在前后端配合下,感受Cookie的存在!
63 0
|
11月前
|
存储 C# 数据库
Qt+QtWebApp开发笔记(四):http服务器使用Session和Cookie实现用户密码登录和注销功能
前面实现了基础的跳转,那么动态交互中登录是常用功能。本篇实现一个动态交互的简单登录和注销功能,在Qt中使用Session和Cookie技术。
|
存储 JavaScript 数据安全/隐私保护
vue登录页实现使用cookie记住7天密码功能(思路)
vue登录页实现使用cookie记住7天密码功能(思路)
88 0