feat(oauth2): 新增:多 Access-Token 并存 & 多 Refresh-Token 并存 & 多 Client-Token 并存 & 移除 Lower-Client-Token 模块

Closes: #IBHFD1, #IBLL4Q
fix: #724
This commit is contained in:
click33
2025-05-13 02:38:31 +08:00
parent 1304cb248d
commit f1089f697c
11 changed files with 959 additions and 475 deletions

View File

@@ -16,12 +16,14 @@ import java.util.List;
@Component
public class SaClientMockDao {
public List<SaClientModel> list = new ArrayList<>();
public List<SaClientModel> list;
/**
* 构造方法,添加三个模拟应用
*/
public SaClientMockDao(){
public void init(){
list = new ArrayList<>();
// 模拟应用1
SaClientModel client1 = new SaClientModel()
.setClientId("1001") // client id
@@ -77,6 +79,9 @@ public class SaClientMockDao {
* @return 应用对象
*/
public SaClientModel getClientModel(String clientId) {
if(list == null) {
init();
}
return list.stream()
.filter(e -> e.getClientId().equals(clientId))
.findFirst()

View File

@@ -0,0 +1,83 @@
package com.pj.test;
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.List;
/**
* 测试 OAuth2 相关 token 增删查
*
* @author click33
* @since 2024/8/25
*/
@RestController
@RequestMapping("/test")
public class Test2Controller {
// 测试:查询全部 Access-Token --- http://localhost:8000/test/getAccessTokenValueList?clientId=1001&loginId=10001
@RequestMapping("/getAccessTokenValueList")
public SaResult getAccessTokenValueList(String clientId, long loginId) {
List<String> accessTokenValueList = SaOAuth2Util.getAccessTokenValueList(clientId, loginId);
return SaResult.data(accessTokenValueList);
}
// 测试:回收指定 Access-Token --- http://localhost:8000/test/revokeAccessToken?access_token=xxxxxxxxxx
@RequestMapping("/revokeAccessToken")
public SaResult revokeAccessToken(String access_token) {
SaOAuth2Util.revokeAccessToken(access_token);
return SaResult.ok();
}
// 测试:回收全部 Access-Token --- http://localhost:8000/test/revokeAccessTokenByIndex?clientId=1001&loginId=10001
@RequestMapping("/revokeAccessTokenByIndex")
public SaResult revokeAccessTokenByIndex(String clientId, long loginId) {
SaOAuth2Util.revokeAccessTokenByIndex(clientId, loginId);
return SaResult.ok();
}
// 测试:查询全部 Refresh-Token --- http://localhost:8000/test/getRefreshTokenValueList?clientId=1001&loginId=10001
@RequestMapping("/getRefreshTokenValueList")
public SaResult getRefreshTokenValueList(String clientId, long loginId) {
List<String> refreshTokenValueList = SaOAuth2Util.getRefreshTokenValueList(clientId, loginId);
return SaResult.data(refreshTokenValueList);
}
// 测试:回收指定 Refresh-Token --- http://localhost:8000/test/revokeRefreshToken?refresh_token=xxxxxxxxxx
@RequestMapping("/revokeRefreshToken")
public SaResult revokeRefreshToken(String refresh_token) {
SaOAuth2Util.revokeRefreshToken(refresh_token);
return SaResult.ok();
}
// 测试:回收全部 Refresh-Token --- http://localhost:8000/test/revokeRefreshTokenByIndex?clientId=1001&loginId=10001
@RequestMapping("/revokeRefreshTokenByIndex")
public SaResult revokeRefreshTokenByIndex(String clientId, long loginId) {
SaOAuth2Util.revokeRefreshTokenByIndex(clientId, loginId);
return SaResult.ok();
}
// 测试:查询全部 Client-Token --- http://localhost:8000/test/getClientTokenValueList?clientId=1001
@RequestMapping("/getClientTokenValueList")
public SaResult getClientTokenValueList(String clientId) {
List<String> clientTokenValueList = SaOAuth2Util.getClientTokenValueList(clientId);
return SaResult.data(clientTokenValueList);
}
// 测试:回收指定 Client-Token --- http://localhost:8000/test/revokeClientToken?client_token=xxxxxxxxxxx
@RequestMapping("/revokeClientToken")
public SaResult revokeClientToken(String client_token) {
SaOAuth2Util.revokeClientToken(client_token);
return SaResult.ok();
}
// 测试:回收全部 Client-Token --- http://localhost:8000/test/revokeClientTokenByIndex?clientId=1001
@RequestMapping("/revokeClientTokenByIndex")
public SaResult revokeClientTokenByIndex(String clientId) {
SaOAuth2Util.revokeClientTokenByIndex(clientId);
return SaResult.ok();
}
}