首先介绍三种记录用户输入密码正确,得到的通行证,有了这个通行证访问网页,才能通过拦截器,成功调用后端的方法。
- Cookie:客户端存储的键值对数据,可以在浏览器和服务器之间传递,通常用于会话管理和用户偏好保存。
- Session:服务器端存储的用户会话数据,通过Session ID来关联客户端,主要用于存储敏感的用户信息和状态。
- Token(如JWT):自包含的身份验证令牌,可以在客户端存储(Cookie或LocalStorage),并在请求中传递用于认证和授权。
这三种实现方法主要是通行证在的位置不同,Cookie是把令牌放到前端,Session是放在了后端,而Token则是直接放在了每次发送的http请求头。
Cookie与Session的主要问题是无法跨域,在前后端分离时,网址请求的协议( 比如http,https就是两种不同的协议),请求的端口号,IP都可能会变化,Cookie这时再做请求会有信息泄露的风险,而Session是用Cookie实现的,在它的基础上,Session也不能在集群服务器里使用,因此他们都不能跨域。
所以Token用的比较多,它不仅实现集群环境的认证,也减轻了储存方面的压力。
JWT令牌
JWT(JSON Web Token)是一种基于JSON的开放标准(RFC 7519)实现的令牌,用于在网络应用环境中传输声明。它由三个部分组成:头部(Header)、载荷(Payload)和签名(Signature)。
- Header:通常包含两部分:令牌的类型(JWT)和所使用的签名算法(如HMAC SHA256)。
- Payload:包含声明(claims),声明分为三种:注册声明(如iss、exp)、公共声明和私有声明。
- Signature:用来验证消息在传递过程中是否被篡改。
主要防伪的部分是数字签名,在登录成功之后,以后的请求头中就会有这一段,来通过拦截器访问后端的方法了。