一、登录校验
1.什么是登录校验
登录校验是服务器端对浏览器端(就是客户端)发送的请求进行校验。校验用户的登录情况,如果用户已经登录,则允许进行用户需要的业务操作,反之则禁止用户操作业务操作,并返回给用户一个错误的提示,让客户端跳转到的登录页面,进行登录操作。
2.如何进行登录校验
-先认清http协议:http协议是无状态协议,无状态是客户端的每一次请求都是独立的,这次的请求不会携带上一次的数据,服务器无法判断这个客户端是否登录。
-进行登录校验的方法:第一步是服务器将用户登录成功的信息存起来,存储用户登录的标识;第二步是在服务器端统一截获客户端的请求,截获之后进行校验,如果校验成功,执行用户所需操作。
-要进行上述操作,可以使用以下两个技术来实现:1是会话技术,2是统一拦截技术
-本篇先介绍会话技术
二、会话技术
1.什么是会话技术
会话:在web开发当中,指的是客户端和服务器端进行的一次连接。我们打开浏览器访问某个页面的时候,就与某个服务器建立了一个会话,直到客户端或者浏览器断开连接,这个会话就结束了。在一次会话当中,可以包含多次请求和响应的。
会话跟踪:用于维护客户端状态的方法,服务器需要判断多次请求是否来自同一客户端,以便在同个会话多次请求间共享数据。
会话跟踪技术有:
-Cookie:客户端会话跟踪技术,数据存储在客户端中
-Session:服务端会话跟踪技术,数据存在服务端中
-令牌技术
三、Cookie技术
1.Cookie技术原理
cookie 是客户端会话跟踪技术,它是存储在客户端浏览器的,使用 cookie 来跟踪会话,就可以在浏览器第一次发起请求来请求服务器的时候,服务器端会响应体中设置一个cookie。
服务器端在给客户端在响应数据的时候,会将 cookie 响应给浏览器,浏览器接收到响应回来的 cookie 之后,会将 cookie 的值存储在浏览器本地。在后续的每一次请求当中,都会将浏览器本地所存储的 cookie 携带到服务端。
2.优缺点
-优点:是http协议中支持的技术,浏览器会自动保存服务器发来的cookie,并在之后的请求中自动的携带cookie
-缺点:移动端无法使用;不安全,用户可以修改或者删除cookie;cookie不支持跨域
四、Session技术
1.Session是什么
它是服务器端会话跟踪技术,它是存储在服务器端的。而 Session 的底层其实就是基于 Cookie 来实现的。
2.实现过程
首先服务器第一次获取某个客户端的请求时,创建一个Session对象,每一个Session都有一个ID标识。
服务器给客户端响应时携带Session的ID给客户端,客户端接收到ID之后,会将ID存储在本地。
之后客户端的每次请求都会将ID携带到服务器端,服务器端拿到ID,通过比对找到对应ID的Session对象,就可以在同一次会话中共享数据。
3.优缺点
-优点:Session存储在服务器端,相对安全
-缺点:
后端项目如果部署在多个服务器上,无法直接使用Session
cookie的缺点Session也包含
五、JWT令牌
1.JWT是什么
JWT全称 JSON Web Token (网址:JWT官网),定义了一种简洁的、自包含的格式,用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在,这些信息是可靠的。
简洁:是指jwt就是一个简单的字符串。可以在请求参数或者是请求头当中直接递。
自包含:可以根据自身的需求在jwt令牌中存储自定义的数据内容。如:可以直接在jwt令牌中存储用户的相关信息。
2.JWT的组成
由三部分组成:
第一部分:Header(头), 记录令牌类型、签名算法等。 例如:{"alg":"HS256","type":"JWT"}
第二部分:Payload(有效载荷),携带一些自定义信息、默认信息等。 例如:{"id":"1","username":"ZhangSan"}
第三部分:Signature(签名),防止令牌被篡改、确保安全性。将header、payload,并加入指定秘钥,通过指定签名算法计算而来。