From ba040510815682da1d2ca24b55728f97153ffad5 Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Sun, 23 Oct 2022 05:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=8C=E7=BA=A7=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E7=9B=B8=E5=85=B3=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sa-token-doc/api/stp-util.md | 11 ++++++ sa-token-doc/up/safe-auth.md | 73 ++++++++++++++++++++++++++++-------- 2 files changed, 69 insertions(+), 15 deletions(-) diff --git a/sa-token-doc/api/stp-util.md b/sa-token-doc/api/stp-util.md index 966530bf..f9de7f50 100644 --- a/sa-token-doc/api/stp-util.md +++ b/sa-token-doc/api/stp-util.md @@ -198,3 +198,14 @@ StpUtil.getSafeTime(); // 获取当前会话的二级认证剩余有效时间 StpUtil.closeSafe(); // 在当前会话 结束二级认证 ``` + +### 16、带有业务标识的二级认证 +``` java +StpUtil.openSafe("<业务标识>", safeTime); // 在当前会话 指定业务标识开启二级认证 +StpUtil.isSafe("<业务标识>"); // 当前会话 指定业务标识是否处于二级认证时间内 +StpUtil.checkSafe("<业务标识>"); // 检查当前会话,指定业务标识是否已通过二级认证,如未通过则抛出异常 +StpUtil.getSafeTime("<业务标识>"); // 获取当前会话的指定业务标识二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证) +StpUtil.closeSafe("<业务标识>"); // 在当前会话 结束指定业务标识二级认证 +``` + + diff --git a/sa-token-doc/up/safe-auth.md b/sa-token-doc/up/safe-auth.md index 7d821a57..95c768c6 100644 --- a/sa-token-doc/up/safe-auth.md +++ b/sa-token-doc/up/safe-auth.md @@ -34,21 +34,6 @@ StpUtil.closeSafe(); ``` -### 使用注解进行二级认证 -在一个方法上使用 `@SaCheckSafe` 注解,可以在代码进入此方法之前进行一次二级认证 -``` java -// 二级认证:必须二级认证之后才能进入该方法 -@SaCheckSafe -@RequestMapping("add") -public String add() { - return "用户增加"; -} -``` - -详细使用方法可参考:[注解鉴权](/use/at-check),此处不再赘述 - - - ### 一个小示例 一个完整的二级认证业务流程,应该大致如下: @@ -93,6 +78,64 @@ public SaResult openSafe(String password) { 6. 后端校验会话已完成二级认证,返回:`仓库删除成功`。 +### 指定业务标识进行二级认证 + +如果项目有多条业务线都需要敏感操作验证,则 `StpUtil.openSafe()` 无法提供细粒度的认证操作, +此时我们可以指定一个业务标识来分辨不同的业务线: + +``` java +// 在当前会话 开启二级认证,业务标识为client,时间为600秒 +StpUtil.openSafe("client", 600); + +// 获取:当前会话是否已完成指定业务的二级认证 +StpUtil.isSafe("client"); + +// 校验:当前会话是否已完成指定业务的二级认证 ,如未认证则抛出异常 +StpUtil.checkSafe("client"); + +// 获取当前会话指定业务二级认证剩余有效时间 (单位: 秒, 返回-2代表尚未通过二级认证) +StpUtil.getSafeTime("client"); + +// 在当前会话 结束指定业务标识的二级认证 +StpUtil.closeSafe("client"); +``` + +业务标识可以填写任意字符串,不同业务标识之间的认证互不影响,比如: +``` java +// 打开了业务标识为 client 的二级认证 +StpUtil.openSafe("client"); + +// 判断是否处于 shop 的二级认证,会返回 false +StpUtil.isSafe("shop"); // 返回 false + +// 也不会通过校验,会抛出异常 +StpUtil.checkSafe("shop"); +``` + + + +### 使用注解进行二级认证 +在一个方法上使用 `@SaCheckSafe` 注解,可以在代码进入此方法之前进行一次二级认证 +``` java +// 二级认证:必须二级认证之后才能进入该方法 +@SaCheckSafe +@RequestMapping("add") +public String add() { + return "用户增加"; +} + +// 指定业务类型,进行二级认证校验 +@SaCheckSafe("art") +@RequestMapping("add2") +public String add2() { + return "文章增加"; +} +``` + +详细使用方法可参考:[注解鉴权](/use/at-check),此处不再赘述 + + + ---