登陆态之浏览器与服务器交互

怎么才算登陆态呢,接下来咱们看看浏览器和服务器是怎么交互的~~~

1、浏览器

1.用户名、密码非空以及格式的校验

通常咱们要求用户在设置密码的时候,得包括大小写字母、数字、或者特殊的字符,从而提升密码的复杂度,不容易被破译。数据库

目的:后端

  • 进行提早校验是为了减小向服务器发送非必要的请求,从而减小服务器的压力。浏览器

  • 防止非正经常使用户进行恶意攻击服务器的代码,须要咱们作一层安全的优化。缓存

2.向服务器发送登陆请求

1.MD5加密 全部的信息在传输的过程都是明文传输,因此对有些比较敏感的数据须要进行加密。安全

  • md5加密属于不可逆转加密,也是作安全优化的第一步,通常在服务器端会作二次加密,以防被攻破。

2.获取用户名和密码后,经过post请求,把信息发送给服务器。服务器

咱们对比一下POST和GET请求之间的区别:markdown

  • 传递请求信息的方式不一样: POST请求经过设置请求主体传递给服务器 ,而get请求经过问号传参来传递给服务器
  • 传递请求信息的大小不一样: GET问号传参是基于URL来传递,因为不一样的浏览器,对URL的长度限制也不一样,因此GET相对传递给服务器的信息较少
  • 从缓存角度: GET会产生缓存(在请求相同的URL,浏览器不作处理,会从缓存中拿数据),因此通常要去掉缓存(经过HASH)以防先后端在必定时间内不一致
  • 从安全角度: POST请求较安全,get请求有可能存在安全隐患(URL劫持技术)

3.服务器返回信息

服务器把信息返回给客户端的时候,会把SID基于响应头Set-Cookie传递给客户端。浏览器会自动将服务器返回的SID种植在当前cookie中,此cookie不能被修改,过时时间和服务器的SESSION保存一致。以便再次请求携带该标识。 cookie

  • cookie相似浏览器和服务器之间的邮递员,经过cookie进行频繁的通讯。
  • 每次浏览器和服务器通讯都会把cookie携带过去
  • 种植的cookie有过时时间

对比一下cookie和Webstorage之间的区别session

  • 大小限制: 通常浏览器容许一个源下cookie最多存储8kB(1024*8B),而localStorage容许存储最大的长度限制为5MB(5*102*1024B)一个字母就是一个字节,一个中文汉字占2字节
  • 兼容性: cookie兼容全部的浏览器,而localStorage是H5新增的,不兼容IE低版本浏览器
  • 稳定性: cookie有过时时间,除此以外通常等不到过时就会被用户清除,电脑上用的一下杀毒或者电脑管家等都会把cookie清除,这些操做不会影响到localStorage。
  • 在用户开启无痕浏览或者隐私模式,此时没法种植cookie,可是是能够设置localStorage的信息ctrl+shift+n

  • 活动能力: 浏览器中的cookie老是和服务器中的session之间相互传递信息,而localStorage只服务于浏览器。

4.退出登陆作校验

当因为某种缘由退出登陆的时候,浏览器会再次向服务器发送请求,告知退出登陆,服务器会把以前在SESSION中的SID和用户的信息清除掉,浏览器并弹出登陆页面。登陆态消失。浏览器和服务器通讯结束。post

2、服务器

1.服务器接收请求

浏览器经过发送post请求,在请求主体中携带用户名和密码,发送给服务器,从而服务器校验该用户在以前是否注册过。

2.服务器作响应的处理

把获取到的信息到数据库中进行查找匹配,看是否有符合条件的数据,做相应的处理,并返回给客户端浏览器。

  • 若是登陆成功,记录登陆态,在服务器端设置SESSION/ERDIS,在SESSION中存储登陆用户的基本信息。
    • 服务器一旦设置SESSION,会建立一个和当前客户端的惟一链接标识SID.
    • 在服务器把信息返回给客户端的时候,会把SID基于响应头Set-Cookie传递给客户端。

  • 若是登陆失败,将信息返回给客户端,咱们给予处理,作注册提醒。

3、页面切换以及再次登陆

1.经过校验登陆态,呈现客户端的登陆态以及其余页面信息

有俩种校验方式,来验证是否为该用户。

  • 客户端本地存储cookie

第一次登陆成功后,在本地浏览器的cookie存储了用户登陆的基本信息和登陆态的标识。 关闭当前浏览器又再次进入该项目index页面的时候或者进入到当前项目其余页面的时候,首先查看一下本地是否存在这个标识,若是存在则标识登陆了,直接返回给相应的信息

  • 服务器存储登陆态的信息

客户端再次向服务器发送请求的时候,浏览器会把cookie中的sid经过请求头中SID传递给服务器,服务器接收到SID后 再次到SESSION中查找匹配。在cookie被清除的时候,登陆态都会失败,须要从新登陆。再次创建当前浏览器和服务器之间的惟一标识SID。 客户端想知道该用户是否登陆,须要向服务器发送请求进行校验。只要不是用户正常退出登陆和其余方式的退出,在浏览器本地cookie和服务器SESSION中SID的过时时间尚未过,就会自动登陆。

2.再次登陆

退出后再次登陆,会再次开启浏览器和服务器之间的通讯。

总结

登陆态:所谓登陆态就是浏览器和服务器之间通讯的惟一标识。

相关文章
相关标签/搜索