你的位置:首页 > 软件开发 > Java > 浅析博客园的保存密码并自动登录, 然后自己写一个demo

浅析博客园的保存密码并自动登录, 然后自己写一个demo

发布时间:2017-01-06 00:06:34
现在的网站基本上都有保存密码并自动登录的功能, 那么密码到底保存在哪里呢? 你会发现, 同一个网站, 如果换一台电脑或者换一个浏览器那就需要重新输入用户名和密码, 从这里可以看出, 密码是保存在浏览器的. 今天就来分析一下博客园的登录并自己写一个demo. 密码是保存在浏览器的c ...

浅析博客园的保存密码并自动登录, 然后自己写一个demo

  现在的网站基本上都有保存密码并自动登录的功能, 那么密码到底保存在哪里呢? 你会发现, 同一个网站, 如果换一台电脑或者换一个浏览器那就需要重新输入用户名和密码, 从这里可以看出, 密码是保存在浏览器的. 今天就来分析一下博客园的登录并自己写一个demo. 密码是保存在浏览器的cookie中的, 那什么叫cookie呢? w3cshool中有这样的定义: cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。是的, 也就是说, 只要浏览器访问服务器并且cookie是存在的(当然, 路径有效才行 ), 浏览器就会携带cookie到服务器. 这是一种自发的行为, 并不需要设置. 就好像你每天出门一定会带手机一样, 并不需要别人提醒你.

  好了, 进入正题. 看一下博客园是怎么保存密码的. 假如我没有登录过博客园, 打开到博客园的登录界面, 然后再浏览器中查看一下关于博客园的cookie, 可以看的这样的:

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

  有3个cookie,分别是这样的3个: 浅析博客园的保存密码并自动登录, 然后自己写一个demo 浅析博客园的保存密码并自动登录, 然后自己写一个demo 并没有关于用户名密码的cookie, 嘿嘿, 因为我此时根本没有登录. 好了, 现在登录

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

 

  开始我并没有勾选下次自动登录的选项, 登录之后重定向到首页. 在开发者工具的network中看一下

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

  可以看到, 多了一个.CNBlogsCookie的请求cookie, 咦咦咦, 刚才没有的啊, 现在就有了, 于是我猜测这就是用户名和密码的cookie, 这只是暂时的一个猜测. 在内容设置中看一下关于这个cookie更详细的信息

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

  刚才总共3个, 现在总共5个, 比刚才多了2个, 看一下多的2个

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

  另外一个是这样的:

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

  可以看到, 2个cookie都是关闭浏览器时过期, 现在关闭浏览器? 不不不, 先看一下哪个保存着登录信息, 先把SERVERID这个cookie删除, 看一下是否还保持着登录状态. 试一下你会发现此时仍保持登录状态, 但是如果把.CNBlogsCookie这个cookie删掉, 你会发现'掉线'了. 由此可以说明登录信息保存在.CNBlogsCookie这个cookie中, 啊嘞, 我为什么要说登录信息呢? 刚才不是说的用户名密码么? 登录信息不就是指的用户名和密码吗? 我觉得不一定要把密码存到cookie中, 可以把一串和密码相关的字符串存到cookie中, 在进行cookie自动登录时, 在数据库中查询用户名和这个字符串, 在表单提交时, 查询用户名和密码, 个人觉得这样更安全. 如果是把用户名和密码保存在了cookie中, 那么就算销毁session退出登录, 下次登录时, 在登录页面浏览器应该自动填写用户名和密码才对(毕竟cookie里面有啊). 就博客园来说, 并不是这样的, 可能你会反驳: "我明明退出登录下次再登录时用户名和密码就在那儿啊.", 其实这并不是cookie的功能, 而是浏览器自己帮你做的, 现在的浏览器一般都有个浅析博客园的保存密码并自动登录, 然后自己写一个demo的功能, 好吧, 这个我想这也算个cookie, 不过此cookie非彼cookie, 呃, 有点混乱, 我也不确定这个功能算不算cookie. 总之, 关闭这个功能, 然会退出登录再打开博客园你会发现登录信息是没有的, 所以通过分析我觉得cookie中不一定保存了密码.

  那么这个cookie是服务器什么时候传给浏览器的, 上面看到的是request cookie, 那么服务器是什么时候response的, 登录是ajax请求登录的, 你可以用浏览器打断点看一下, 可以发现.CNBlogsCookie是登录请求时response回来的, 如下图

  浅析博客园的保存密码并自动登录, 然后自己写一个demo

  好了, 现在也知道登录信息保存在哪里了, 现在关闭浏览器再打开, 你会发现此时登录状态已经没有了, 因为保存登录信息的cookie已经消失了, 关闭浏览器即代表结束一次会话(销毁session). 嗯, 到这里我们基本知道博客园是怎么保存密码的(可能并没有把密码保存在cookie中, 可能只是保存了一个与密码相关的字符串, 也可能保存的是经过加密的密码), 只是没有将cookie保存在客户端硬盘中而已(没有勾选下次自动登录), 那么是怎么实现自动登录呢? 想想cookie的工作原理: 浏览器每次请求服务器, 如果存在cookie, 并且域和路径符合要求, 都会将cookie携带至服务器.(域和路径看上面的图) 所以只要访问该网站, 服务器判断cookie中的值,  然后判断用户是否可以改为登录状态就行了.

  所以登录页面勾选下次自动登录就是表示将cookie存到硬盘中, 大概清楚了博客园保存密码并自动登录的方式: 首次登录时将登录信息保存到cookie中, 下次登录时浏览器携带包含登录信息的cookie到服务器校验从而显示自动登录

  自己写一个保存密码并自动登录的demo, 两个页面loginUI.jsp和successUI.jsp, loginUI.jsp用于登录, successUI.jsp只有成功登录之后才能访问

  loginUI.jsp:

浅析博客园的保存密码并自动登录, 然后自己写一个demo浅析博客园的保存密码并自动登录, 然后自己写一个demo
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <base href="<%=basePath%>">    <title>cookie login</title>   <script type="text/javascript" src='/images/loading.gif' data-original="js/jquery-1.8.3.min.js"></script>  <script type="text/javascript">    function checkCookie(){      //把用户名取出来      var username = getCookie("loginInfo");      $(":text").val(username);    }        function getCookie(c_name){      if(document.cookie.length > 0){        var coo = document.cookie;        var start = coo.indexOf(c_name+"=")+c_name.length+1;        var end = coo.indexOf(";", start);        if(end == -1)          end = coo.length;        var cookieValue = decodeURIComponent(coo.substring(start, end));        return cookieValue.split(",")[0];      }    }  </script> </head>  <body onload="checkCookie()">  <form action="cookie_login.action" method="post">    用户名<input type="text" name="user.username"><br>    密码<input type="password" name="user.password"><br>    <input type="submit" value="登录">  </form> </body></html>

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:浅析博客园的保存密码并自动登录, 然后自己写一个demo

关键词:登录

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。