From fee9ef16431b95a236d3a77d54528d471b6112ba Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Fri, 16 May 2025 06:36:27 +0800
Subject: [PATCH] =?UTF-8?q?feat(oauth2):=20SaOAuth2Util=20=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=20currentAccessToken()=E3=80=81currentClientToken()?=
=?UTF-8?q?=EF=BC=8C=E7=AE=80=E5=8C=96=E8=AF=BB=E5=8F=96=20access=5Ftoken?=
=?UTF-8?q?=E3=80=81client=5Ftoken=20=E6=AD=A5=E9=AA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sa-token-doc/oauth2/oauth2-dev.md | 15 +++++++++++++
.../data/resolver/SaOAuth2DataResolver.java | 6 +++--
.../SaOAuth2DataResolverDefaultImpl.java | 4 +++-
.../oauth2/template/SaOAuth2Template.java | 22 +++++++++++++++++++
.../satoken/oauth2/template/SaOAuth2Util.java | 19 ++++++++++++++++
5 files changed, 63 insertions(+), 3 deletions(-)
diff --git a/sa-token-doc/oauth2/oauth2-dev.md b/sa-token-doc/oauth2/oauth2-dev.md
index b29aa8f0..bfe6361d 100644
--- a/sa-token-doc/oauth2/oauth2-dev.md
+++ b/sa-token-doc/oauth2/oauth2-dev.md
@@ -130,6 +130,21 @@ SaOAuth2Util.revokeClientToken(clientToken);
SaOAuth2Util.revokeClientTokenByIndex(clientId);
```
+
+### 请求查询
+
+``` java
+// 数据读取:从当前请求对象中读取 access_token,并查询到 AccessTokenModel 信息,无效 access_token 抛出异常
+// 1、请求参数 access_token,2、请求头 Authorization Bearer access_token
+SaOAuth2Util.currentAccessToken();
+
+// 数据读取:从当前请求对象中读取 client_token,并查询到 ClientTokenModel 信息,无效 client_token 抛出异常
+// 1、请求参数 client_token,2、请求头 Authorization Bearer client_token
+SaOAuth2Util.currentClientToken();
+```
+
+
+
详情请参考源码:[码云:SaOAuth2Util.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Util.java)
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolver.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolver.java
index 6514b449..d5445b4a 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolver.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolver.java
@@ -43,7 +43,8 @@ public interface SaOAuth2DataResolver {
ClientIdAndSecretModel readClientIdAndSecret(SaRequest request);
/**
- * 数据读取:从请求对象中读取 AccessToken
+ * 数据读取:从请求对象中读取 AccessToken,获取不到返回 null
+ *
1、请求参数 access_token,2、请求头 Authorization Bearer access_token
*
* @param request /
* @return /
@@ -51,7 +52,8 @@ public interface SaOAuth2DataResolver {
String readAccessToken(SaRequest request);
/**
- * 数据读取:从请求对象中读取 ClientToken
+ * 数据读取:从请求对象中读取 ClientToken,获取不到返回 null
+ *
1、请求参数 client_token,2、请求头 Authorization Bearer client_token
*
* @param request /
* @return /
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolverDefaultImpl.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolverDefaultImpl.java
index 596db101..423d9e0c 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolverDefaultImpl.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/data/resolver/SaOAuth2DataResolverDefaultImpl.java
@@ -73,7 +73,8 @@ public class SaOAuth2DataResolverDefaultImpl implements SaOAuth2DataResolver {
}
/**
- * 数据读取:从请求对象中读取 AccessToken,获取不到返回 null
+ * 数据读取:从请求对象中读取 AccessToken,获取不到返回 null,获取不到返回 null
+ *
1、请求参数 access_token,2、请求头 Authorization Bearer access_token
*/
@Override
public String readAccessToken(SaRequest request) {
@@ -101,6 +102,7 @@ public class SaOAuth2DataResolverDefaultImpl implements SaOAuth2DataResolver {
/**
* 数据读取:从请求对象中读取 ClientToken,获取不到返回 null
+ *
1、请求参数 client_token,2、请求头 Authorization Bearer client_token
*/
@Override
public String readClientToken(SaRequest request) {
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Template.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Template.java
index a4b5c3e1..54cf1e87 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Template.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Template.java
@@ -15,6 +15,7 @@
*/
package cn.dev33.satoken.oauth2.template;
+import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.oauth2.SaOAuth2Manager;
import cn.dev33.satoken.oauth2.dao.SaOAuth2Dao;
import cn.dev33.satoken.oauth2.data.model.AccessTokenModel;
@@ -726,6 +727,27 @@ public class SaOAuth2Template {
}
+ // ------------------- 请求查询
+
+ /**
+ * 数据读取:从当前请求对象中读取 access_token,并查询到 AccessTokenModel 信息,无效 access_token 抛出异常
+ *
1、请求参数 access_token,2、请求头 Authorization Bearer access_token
+ */
+ public AccessTokenModel currentAccessToken() {
+ String accessToken = SaOAuth2Manager.getDataResolver().readAccessToken(SaHolder.getRequest());
+ return checkAccessToken(accessToken);
+ }
+
+ /**
+ * 数据读取:从当前请求对象中读取 client_token,并查询到 ClientTokenModel 信息,无效 client_token 抛出异常
+ *
1、请求参数 client_token,2、请求头 Authorization Bearer client_token
+ */
+ public ClientTokenModel currentClientToken() {
+ String clientToken = SaOAuth2Manager.getDataResolver().readClientToken(SaHolder.getRequest());
+ return checkClientToken(clientToken);
+ }
+
+
// ----------------- 包装其它 bean 的方法 -----------------
/**
diff --git a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Util.java b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Util.java
index 61ad461e..bceb34af 100644
--- a/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Util.java
+++ b/sa-token-plugin/sa-token-oauth2/src/main/java/cn/dev33/satoken/oauth2/template/SaOAuth2Util.java
@@ -378,4 +378,23 @@ public class SaOAuth2Util {
SaOAuth2Manager.getTemplate().revokeClientTokenByIndex(clientId);
}
+
+ // ------------------- 请求查询
+
+ /**
+ * 数据读取:从当前请求对象中读取 access_token,并查询到 AccessTokenModel 信息,无效 access_token 抛出异常
+ *
1、请求参数 access_token,2、请求头 Authorization Bearer access_token
+ */
+ public static AccessTokenModel currentAccessToken() {
+ return SaOAuth2Manager.getTemplate().currentAccessToken();
+ }
+
+ /**
+ * 数据读取:从当前请求对象中读取 client_token,并查询到 ClientTokenModel 信息,无效 client_token 抛出异常
+ *
1、请求参数 client_token,2、请求头 Authorization Bearer client_token
+ */
+ public static ClientTokenModel currentClientToken() {
+ return SaOAuth2Manager.getTemplate().currentClientToken();
+ }
+
}