(1)cookie
-
定义:Cookie 是由服务器发送到用户浏览器并保存在本地的一小段文本信息。它通常包含有关用户的信息,如登录状态、浏览偏好等。
-
工作原理:当用户访问一个网站时,服务器可以通过在响应头中设置
Set-Cookie字段来发送 Cookie 到浏览器。浏览器会将 Cookie 存储在本地,并且在后续对同一网站的请求中,会在请求头中包含相应的 Cookie 信息,以便服务器能够识别用户。 -
作用
-
用户身份识别:可以用于记录用户的登录状态,例如,用户登录后,服务器会设置一个包含用户身份信息的 Cookie,下次用户访问时,服务器通过这个 Cookie 就能知道用户是谁,从而为用户提供个性化的服务。
-
记录用户偏好:网站可以通过 Cookie 记录用户的浏览偏好,如字体大小、页面布局等,以便为用户提供一致的浏览体验。
-
-
缺点:Cookie 的大小通常有限制,一般不超过 4KB。而且由于 Cookie 是存储在用户本地的,存在一定的安全风险,如可能被用户篡改或被恶意网站窃取。

(2)session
-
定义:Session 是服务器端用于跟踪用户会话的一种机制。它通过一个唯一的会话 ID 来标识每个用户的会话,将用户相关的数据存储在服务器端。
-
工作原理:当用户访问网站时,服务器会为用户创建一个唯一的 Session ID,并将其发送给浏览器。浏览器通常会将这个 Session ID 存储在 Cookie 中(也可以通过 URL 重写等方式传递)。在后续的请求中,浏览器会将 Session ID 发送给服务器,服务器根据这个 Session ID 来查找对应的用户会话数据,从而实现对用户状态的跟踪。
-
作用
-
购物车功能实现:在电子商务网站中,用户将商品添加到购物车,这些购物车信息就可以存储在 Session 中。这样,无论用户在网站的哪个页面,都能访问到自己购物车中的商品,直到用户完成购物或清空购物车。
-
多页面表单数据传递:当用户填写一个多页面的表单时,Session 可以用来存储用户在前面页面已经填写的数据,确保数据在整个表单提交过程中不会丢失。
-
-
缺点:由于 Session 数据存储在服务器端,当用户量较大时,可能会占用较多的服务器资源。另外,如果服务器出现故障或重启,未保存的 Session 数据可能会丢失。
例如:
session = {AIQEQIEQE:{'name':'小明','age':20, 'amount':1000}}
# AIQEQIEQE就是服务端给客户端的标识,下次客户端只要带着AIQEQIEQE这个标识过来,服务端就可以通过session['AIQEQIEQE']获取这个标识对应的信息,获取到了,则判断这是一个合格的客户端,否则就给予权限提示。

(3)token
-
定义:Token 是一种用于验证用户身份和授权访问资源的字符串。它是一种安全机制,用于在不同的系统或服务之间传递用户的身份信息和权限信息。
-
工作原理:用户在登录时,系统会验证用户的凭据(如用户名和密码)。如果验证成功,系统会生成一个唯一的 Token,并将其返回给用户。用户在后续的请求中,需要将这个 Token 包含在请求头中,服务器通过验证 Token 的有效性来确定用户的身份和权限,从而决定是否允许用户访问请求的资源。
-
作用
-
身份验证:确保只有合法的用户能够访问系统资源。通过验证 Token 的有效性,服务器可以确定请求是否来自已登录的用户。
-
授权:Token 可以携带用户的权限信息,服务器根据这些信息来判断用户是否有权执行特定的操作,如访问特定的文件、修改数据等。
-
-
类型:常见的 Token 类型有访问令牌(Access Token)、刷新令牌(Refresh Token)等。访问令牌用于获取对资源的访问权限,通常有较短的有效期;刷新令牌用于在访问令牌过期时获取新的访问令牌,有效期一般较长。

(4)JWT(JSON Web Token)
-
定义:JWT 是一种基于 JSON 的开放标准(RFC 7519),用于在各方之间安全地传输信息。它通常用于在身份验证过程中,将用户的身份信息从认证服务器传递到客户端或其他服务器。
-
工作原理:JWT 由三部分组成,分别是头部(Header)、载荷(Payload)和签名(Signature)。头部包含了令牌的类型和使用的加密算法等信息;载荷包含了用户的身份信息、权限信息以及其他相关数据,以 JSON 格式存储;签名是通过使用密钥对头部和载荷进行加密生成的,用于验证令牌的完整性和真实性。客户端在收到 JWT 后,将其存储在本地,如浏览器的本地存储或 Cookie 中。在后续的请求中,客户端将 JWT 添加到请求头中,服务器接收到请求后,通过验证签名来确保 JWT 的有效性,然后从载荷中获取用户的身份和权限信息,进行相应的授权和处理。
-
作用
-
跨域身份验证:由于 JWT 是自包含的,并且可以通过 HTTP 头在不同的域之间传递,因此它非常适合用于跨域应用的身份验证和授权。
-
单点登录(SSO):在多个相关的系统或应用中,用户只需在一个系统中登录一次,就可以使用 JWT 在其他系统中进行身份验证,实现单点登录的功能。
-
-
优点:JWT 具有简洁、紧凑的特点,便于在不同的系统之间传递。同时,由于它是基于 JSON 格式的,易于解析和处理。此外,JWT 的签名机制保证了数据的完整性和真实性,只有拥有正确密钥的服务器才能验证和解析 JWT。
总的来说,Token 是一个较为宽泛的概念,而 JWT 是一种具体的、标准化的 Token 实现方式,它在 Web 应用的身份验证和授权场景中具有广泛的应用。

1199

被折叠的 条评论
为什么被折叠?



