1
0
mirror of synced 2026-05-22 14:43:15 +00:00

完善 OAuth2-自定义权限处理器 章节文档

This commit is contained in:
click33
2024-08-20 12:58:56 +08:00
parent 174a94db01
commit c4b6a6381e
10 changed files with 300 additions and 21 deletions
@@ -8,6 +8,7 @@ import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
@@ -59,11 +60,10 @@ public class SaOAuth2ServerController {
// ---------- 开放相关资源接口: Client端根据 Access-Token ,置换相关资源 ------------
// 获取Userinfo信息:昵称、头像、性别等等
// 获取 userinfo 信息:昵称、头像、性别等等
@RequestMapping("/oauth2/userinfo")
public SaResult userinfo() {
// 获取 Access-Token 对应的账号id
String accessToken = SaHolder.getRequest().getParamNotNull("access_token");
public SaResult userinfo(@RequestParam("access_token") String accessToken) {
// 获取 Access-Token 对应的账号id
Object loginId = SaOAuth2Util.getLoginIdByAccessToken(accessToken);
System.out.println("-------- 此Access-Token对应的账号id: " + loginId);
@@ -71,9 +71,9 @@ public class SaOAuth2ServerController {
SaOAuth2Util.checkScope(accessToken, "userinfo");
// 模拟账号信息 (真实环境需要查询数据库获取信息)
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("userId", "10008");
map.put("nickname", "shengzhang_");
Map<String, Object> 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", "");
@@ -0,0 +1,41 @@
package com.pj.oauth2;
import cn.dev33.satoken.oauth2.data.model.AccessTokenModel;
import cn.dev33.satoken.oauth2.data.model.ClientTokenModel;
import cn.dev33.satoken.oauth2.scope.handler.SaOAuth2ScopeHandlerInterface;
import org.springframework.stereotype.Component;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author click33
* @since 2024/8/20
*/
@Component
public class UserinfoScopeHandler implements SaOAuth2ScopeHandlerInterface {
@Override
public String getHandlerScope() {
return "userinfo";
}
@Override
public void workAccessToken(AccessTokenModel at) {
System.out.println("--------- userinfo 权限,加工 AccessTokenModel --------- ");
// 模拟账号信息 (真实环境需要查询数据库获取信息)
Map<String, Object> map = new LinkedHashMap<String, Object>();
map.put("userId", "10008");
map.put("nickname", "shengzhang_");
map.put("avatar", "http://xxx.com/1.jpg");
map.put("age", "18");
map.put("sex", "");
map.put("address", "山东省 青岛市 城阳区");
at.extraData.put("userinfo", map);
}
@Override
public void workClientToken(ClientTokenModel ct) {
}
}