【备战春招】第2天 springboot 技术栈分析之sa-token
课程名称:SpringBoot2.X + Vue + UniAPP,全栈开发医疗小程序
课程章节: 第一章
课程讲师:神思者
课程内容
sa-token
sa-token 内置了 jwt功能 他是国内新崛起得开源免费认证授权框架
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。
// 会话登录,参数填登录人的账号id StpUtil.login(10001); // 校验当前客户端是否已经登录,如果未登录则抛出 `NotLoginException` 异常 StpUtil.checkLogin(); // 将账号id为 10077 的会话踢下线 StpUtil.kickout(10077); // 注解鉴权:只有具备 `user:add` 权限的会话才可以进入方法 @SaCheckPermission("user:add") public String insert(SysUser user) { // ... return "用户增加"; }
Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。
登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录
权限认证 —— 权限认证、角色认证、会话二级认证
Session会话 —— 全端共享Session、单端独享Session、自定义Session
踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线
账号封禁 —— 登录封禁、按照业务分类封禁、按照处罚阶梯封禁
持久层扩展 —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失
分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案
微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证
单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定
OAuth2.0认证 —— 轻松搭建 OAuth2.0 服务,支持openid模式
二级认证 —— 在已登录的基础上再次认证,保证安全性
Basic认证 —— 一行代码接入 Http Basic 认证
独立Redis —— 将权限缓存与业务缓存分离
临时Token认证 —— 解决短时间的Token授权问题
模拟他人账号 —— 实时操作任意用户状态数据
临时身份切换 —— 将会话身份临时切换为其它账号
前后台分离 —— APP、小程序等不支持Cookie的终端
同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
Token风格定制 —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀
注解式鉴权 —— 优雅的将鉴权与业务代码分离
路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式
自动续签 —— 提供两种Token过期策略,灵活搭配使用,还可自动续签
会话治理 —— 提供方便灵活的会话查询接口
记住我模式 —— 适配[记住我]模式,重启浏览器免验证
密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用
token 认证原理
传统的单体JavaWeb项目通常采用HttpSession保存登陆成功的凭证,但是HttpSession需要浏览器的Cookie机制配合。也就是说Web项目的客户端只能是浏览器,不可以是APP、机顶盒、智能家电等。
为了让Java项目兼容更多的客户端设备,所以我们要放弃在客户端用Cookie保存SessionId的做法。我们在服务端生成Token字符串,然后交给客户端保存。APP也好、浏览器也好、机顶盒也好,都能保存字符串。每次发送HTTP请求的时候,在请求头上附带Token字符串,SaToken框架就能解析出该Token是否合法,如果没有问题,就允许客户端请求后端的Web方法。
即便有人破解了SaToken生成令牌的算法,我们也不用担心,因为我们开启了Redis保存Token副本的功能。如果SaToken检测到请求头的Token在Redis中没有缓存副本,那么这个Token肯定是伪造的,所以就拒绝请求。另外Redis中的Token有过期时间,客户端提交的Token是过期的,SaToken也能判断出来,然后拒绝请求
共同学习,写下你的评论
评论加载中...
作者其他优质文章