06、实现JWT单点登录功能
6-1 本章介绍 (03:54)
两种单点登录方案介绍: redis+token;jwt
redis+token:其中的token是无意义的,主要是为了区别
jwt: 其中token是有意义的
6-2 介绍两种单点登录方案设计 (05:58)
redis+token
生成随机的token并放入到redis。token为key,用户信息为value
将token放入请求头,后端过滤。向redis中请求token,验证数据
JWT
使用工具包 生成JWT token
使用工具包解密 JWT token
6-3 JWT单点登录原理与存在的问题及解决方案讲解 (11:57)
JWT原理:
https://hutool.cn/docs/#/jwt/概述?id=由来
JWT存在的问题及解决方案讲解
问题:token被解密
解决:加盐值(密钥),每个项目的盐值不能一样
问题:token被拿到第三方使用,自己的产品,被别人包了一个界面,做成他们收费的产品,比较典型的,就是2023年初出现的ChatGPT,很多人把它包成收费小程序
解决:没啥好方法,使用限流
6-4 详解生成JWT单点登录token (14:09)
第三方提供的类比较通用,有时我们会在自己的项目里,再封装成一个自己的工具类,加入项目特有的信息。
盐值很重要,不能泄漏,且每个项目都应该不一样,可以放到配置文件中
6-5 使用vuex保存登录信息 (12:47)
vuex或称store,用于存储全局变量,可用于各页面传递参数,或放置项目全局信息
state:定义一个全局变量
getters:获取变量时,做些额外的转换,如日期格式化
mutations:相当于java的setter,用于修改变量
actions:发起异步任务
modules:项目较大,变量较多时,可以模块化
缺点:页面刷新后,数据会丢失
6-6 vuex配合h5的session解决浏览器刷新问题 (09:15)
前端小技巧,使用:|| {} 为变量赋值,可防止空指针异常
6-7 演示gateway拦截器的使用 (09:04)
登录校验两个步骤:
前端请求带上token,放在header里
后端校验token有效性,在gateway里统一校验
gateway有多个拦截器时,使用order来确定拦截器的顺序
6-8 为gateway增加登录校验拦截器 (14:21)
6-9 为axios请求增加统一拦截器 (11:44)
ref用来声明基本的数据类型
reactive用来声明对象或对象数组
对ref变量的取值、赋值都必须加:.value
6-10 为路由页面增加登录拦截 (08:52)
除了对接口做登录拦截,页面路由也应该做登录拦截