From f221d4ce970a08d46c71eb9f8867cb67a5b5c541 Mon Sep 17 00:00:00 2001
From: click33 <2393584716@qq.com>
Date: Fri, 6 Dec 2024 17:52:21 +0800
Subject: [PATCH] =?UTF-8?q?chore(oauth2):=20=E6=96=B0=E5=BB=BA=20`SaOAuth2?=
=?UTF-8?q?ResourcesController.java`=20=E4=BB=A5=E6=9C=9F=E6=9B=B4?=
=?UTF-8?q?=E7=AE=80=E5=8D=95=E6=98=8E=E4=BA=86=E7=9A=84=E5=B1=95=E7=A4=BA?=
=?UTF-8?q?=20OAuth2=20=E8=B5=84=E6=BA=90=E7=AB=AF=E6=90=AD=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../oauth2/SaOAuth2ResourcesController.java | 51 +++++++++++++++++++
.../pj/oauth2/SaOAuth2ServerController.java | 30 +----------
2 files changed, 52 insertions(+), 29 deletions(-)
create mode 100644 sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ResourcesController.java
diff --git a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ResourcesController.java b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ResourcesController.java
new file mode 100644
index 00000000..82d9b3bc
--- /dev/null
+++ b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ResourcesController.java
@@ -0,0 +1,51 @@
+package com.pj.oauth2;
+
+import cn.dev33.satoken.context.SaHolder;
+import cn.dev33.satoken.oauth2.SaOAuth2Manager;
+import cn.dev33.satoken.oauth2.template.SaOAuth2Util;
+import cn.dev33.satoken.util.SaResult;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Sa-Token OAuth2 Resources 端 Controller
+ *
+ *
Resources 端:OAuth2 资源端,允许 Client 端根据 Access-Token 置换相关资源
+ *
+ * 在 OAuth2 中,认证端和资源端:
+ * 1、可以在一个 Controller 中,也可以在不同的 Controller 中
+ * 2、可以在同一个项目中,也可以在不同的项目中(在不同项目中时需要两端连同一个 Redis )
+ *
+ *
+ * @author click33
+ * @since 2024/12/6
+ */
+@RestController
+public class SaOAuth2ResourcesController {
+
+ // 示例:获取 userinfo 信息:昵称、头像、性别等等
+ @RequestMapping("/oauth2/userinfo")
+ public SaResult userinfo() {
+ // 获取 Access-Token 对应的账号id
+ String accessToken = SaOAuth2Manager.getDataResolver().readAccessToken(SaHolder.getRequest());
+ Object loginId = SaOAuth2Util.getLoginIdByAccessToken(accessToken);
+ System.out.println("-------- 此Access-Token对应的账号id: " + loginId);
+
+ // 校验 Access-Token 是否具有权限: userinfo
+ SaOAuth2Util.checkAccessTokenScope(accessToken, "userinfo");
+
+ // 模拟账号信息 (真实环境需要查询数据库获取信息)
+ Map map = new LinkedHashMap<>();
+ // map.put("userId", loginId); 一般原则下,oauth2-server 不能把 userId 返回给 oauth2-client
+ map.put("nickname", "林小林");
+ map.put("avatar", "http://xxx.com/1.jpg");
+ map.put("age", "18");
+ map.put("sex", "男");
+ map.put("address", "山东省 青岛市 城阳区");
+ return SaResult.ok().setMap(map);
+ }
+
+}
\ No newline at end of file
diff --git a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java
index fee73b06..afc5bd26 100644
--- a/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java
+++ b/sa-token-demo/sa-token-demo-oauth2/sa-token-demo-oauth2-server/src/main/java/com/pj/oauth2/SaOAuth2ServerController.java
@@ -1,10 +1,8 @@
package com.pj.oauth2;
import cn.dev33.satoken.context.SaHolder;
-import cn.dev33.satoken.oauth2.SaOAuth2Manager;
import cn.dev33.satoken.oauth2.config.SaOAuth2ServerConfig;
import cn.dev33.satoken.oauth2.processor.SaOAuth2ServerProcessor;
-import cn.dev33.satoken.oauth2.template.SaOAuth2Util;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,11 +11,10 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import java.util.HashMap;
-import java.util.LinkedHashMap;
import java.util.Map;
/**
- * Sa-Token-OAuth2 Server端 Controller
+ * Sa-Token-OAuth2 Server 认证端 Controller
*
* @author click33
*/
@@ -58,29 +55,4 @@ public class SaOAuth2ServerController {
}
-
- // ---------- 开放相关资源接口: Client端根据 Access-Token ,置换相关资源 ------------
-
- // 获取 userinfo 信息:昵称、头像、性别等等
- @RequestMapping("/oauth2/userinfo")
- public SaResult userinfo() {
- // 获取 Access-Token 对应的账号id
- String accessToken = SaOAuth2Manager.getDataResolver().readAccessToken(SaHolder.getRequest());
- Object loginId = SaOAuth2Util.getLoginIdByAccessToken(accessToken);
- System.out.println("-------- 此Access-Token对应的账号id: " + loginId);
-
- // 校验 Access-Token 是否具有权限: userinfo
- SaOAuth2Util.checkAccessTokenScope(accessToken, "userinfo");
-
- // 模拟账号信息 (真实环境需要查询数据库获取信息)
- Map map = new LinkedHashMap<>();
- // map.put("userId", loginId); 一般原则下,oauth2-server 不能把 userId 返回给 oauth2-client
- map.put("nickname", "林小林");
- map.put("avatar", "http://xxx.com/1.jpg");
- map.put("age", "18");
- map.put("sex", "男");
- map.put("address", "山东省 青岛市 城阳区");
- return SaResult.ok().setMap(map);
- }
-
}