文章目录
- 传统cooike 和 session登录流程
浏览器传输用户名和密码 ----> 服务器验证,服务器session存储信息
浏览器 <---- 浏览器并返回唯一sessionId给浏览器
浏览器将sessionId放cookie去请求 —> 浏览器验证合法返回信息
不支持横向扩展,若服务器很多,则sessionId只存放在一个服务器。
可将sessionId放入redis中。若redis崩溃,则验证都失效
- JWT无状态认证
浏览器登陆请求 ----> 服务器创建token
浏览器 <---- 返回token
携带token去请求 -----> 服务器校验合法并返回信息
Header | Payload | Signature服务 |
---|---|---|
加密算法: “HS256” ; 类型: “jwt” | 存放主体信息 | 签名部分,使用Header生成哈希签名 |
不安全 加密算法和信息都暴露 ---- 所以非敏感信息并且短期
存储占用空间太大 ----- 但是客户端存储 服务端很轻松
- 建议
Session认证机制需要配合Cookie才能实现。并且由于Cookie默认并不支持跨域访问,涉及到前端跨域请求后端接口的时候,需要做很多额外的配置,才能实现跨域Session认证。
即:
(1)服务器端渲染推荐使用Session认证机制
(2)前后端分离推荐使用JWT认证机制