文档新增常用类、方法说明

This commit is contained in:
click33 2021-06-04 23:07:04 +08:00
parent 3aed3f96ec
commit c5d726952a
4 changed files with 117 additions and 2 deletions

View File

@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import cn.dev33.satoken.SaManager;
/**
* sa-token整合SpringBoot 示例
* Sa-Token整合SpringBoot 示例
* @author kong
*
*/

View File

@ -38,7 +38,8 @@
- [Quick-Login快速登录插件](/plugin/quick-login)
- **其它**
- [常见问题](/more/common-questions)
- [常用类、方法](/more/common-action)
- [常见问题排查](/more/common-questions)
- [更新日志](/more/update-log)
- [友情链接](/more/link)
- [推荐公众号](/more/tj-gzh)

View File

@ -0,0 +1,98 @@
# 常用类、方法
本篇介绍Sa-Token中一些常用的全局对象、类
---
### SaManager
SaManager 负责管理 Sa-Token 所有运行时对象
``` java
SaManager.getConfig(); // 获取全局配置对象
SaManager.getSaTokenDao(); // 获取数据持久化对象
SaManager.getStpInterface(); // 获取权限认证对象
SaManager.getSaTokenAction(); // 获取框架行为对象
SaManager.getSaTokenContext(); // 获取上下文处理对象
SaManager.getSaTokenListener(); // 获取侦听器对象
SaManager.getStpLogic("key"); // 获取指定key的StpLogic对象
```
### SaHolder
Sa-Token上下文持有类通过此类快速获取当前环境的相关对象
``` java
SaHolder.getRequest(); // 获取当前请求的 [Request] 对象
SaHolder.getResponse(); // 获取当前请求的 [Response] 对象
SaHolder.getStorage(); // 获取当前请求的 [存储器] 对象
```
### SaRouter
路由匹配工具类,详细戳:[路由拦截式鉴权](/use/route-check)
### SaFoxUtil
Sa-Token内部工具类包含一些工具方法
``` java
SaFoxUtil.printSaToken(); // 打印 Sa-Token 版本字符画
SaFoxUtil.getRandomString(8); // 生成指定长度的随机字符串
SaFoxUtil.isEmpty(str); // 指定字符串是否为null或者空字符串
SaFoxUtil.getMarking28(); // 以当前时间戳和随机int数字拼接一个随机字符串
SaFoxUtil.formatDate(date); // 将日期格式化为yyyy-MM-dd HH:mm:ss字符串
SaFoxUtil.searchList(); // 从集合里查询数据
SaFoxUtil.vagueMatch(patt, str); // 字符串模糊匹配
```
### SaTokenConfigFactory
配置对象工厂类通过此类你可以方便的根据properties配置文件创建一个配置对象
1、首先在项目根目录创建一个配置文件`sa-token.properties`
``` java
# token名称 (同时也是cookie名称)
tokenName=satoken
# token有效期单位s 默认30天, -1代表永不过期
timeout=2592000
# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
activityTimeout
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) =-1
allowConcurrentLogin=true
# 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
isShare=true
# token风格
isLog=false
```
2、然后使用以下代码获取配置对象
``` java
// 设置配置文件地址
SaTokenConfigFactory.configPath = "sa-token.properties";
// 获取配置信息到 config 对象
SaTokenConfig config = SaTokenConfigFactory.createConfig();
// 注入到 SaManager 中
SaManager.setConfig(config);
```
### SpringMVCUtil
SpringMVC操作的工具类位于包`sa-token-spring-boot-starter`
``` java
SpringMVCUtil.getRequest(); // 获取当前会话的 request
SpringMVCUtil.getResponse(); // 获取当前会话的 response
```
### SaReactorHolder & SaReactorSyncHolder
Sa-Token集成Reactor时的 ServerWebExchange 工具类,位于包:`sa-token-reactor-spring-boot-starter`
``` java
// 异步方式获取 ServerWebExchange 对象
SaReactorHolder.getContent().map(e -> {
System.out.println(e);
});
// 同步方式获取 ServerWebExchange 对象
ServerWebExchange e = SaReactorSyncHolder.getContent();
System.out.println(e);
```

View File

@ -33,6 +33,22 @@ Sa-Token 在集群、分布式下的解决方案
### 依赖引入说明
虽然在[开始]章节已经说明了依赖引入规则但是交流群里不少小伙伴提出bug解决到最后发现都是因为依赖引入错误引起的此处再次重点强调一下
**在微服务架构中使用Sa-Token时网关和内部服务要分开引入Sa-Token依赖不要直接在顶级父pom中引入Sa-Token**
总体来讲,需要关注的依赖就是两个:`sa-token-spring-boot-starter` 和 `sa-token-reactor-spring-boot-starter`,至于怎么分辨我们需要引入哪个呢?这个要看你使用的基础框架
对于内部基础服务来讲我们一般都是使用SpringBoot默认的web模块SpringMVC因为这个SpringMVC是基于Servlet模型的在这里我们需要引入的是`sa-token-spring-boot-starter`
对于网关服务,大体来讲分为两种:
- 一种是基于Servlet模型的Zuul我们需要引入的是`sa-token-spring-boot-starter`,详细戳:[在SpringBoot环境集成](/start/example)
- 一种是基于Reactor模型的SpringCloud Gateway、Soul 等等,我们需要引入的是:`sa-token-reactor-spring-boot-starter`**并且注册全局过滤器!**,详细戳:[在WebFlux环境集成](/start/webflux-example)
切不可直接在一个项目里同时引入这两个依赖,否则会造成项目无法启动