mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-06-28 04:35:16 +08:00
docs: sso 章节和 oauth2 章节文档增加可重写策略说明
This commit is contained in:
parent
df91c2ece0
commit
a5ea1a3a4d
@ -130,8 +130,93 @@ SaOAuth2Util.revokeClientToken(clientToken);
|
||||
SaOAuth2Util.revokeClientTokenByIndex(clientId);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
详情请参考源码:[码云: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)
|
||||
|
||||
|
||||
### OAuth2-Server 所有可重写策略
|
||||
|
||||
|
||||
#### 权限处理器
|
||||
``` java
|
||||
// 根据 scope 信息对一个 AccessTokenModel 进行加工处理
|
||||
SaOAuth2Strategy.instance.workAccessTokenByScope = at -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 当使用 RefreshToken 刷新 AccessToken 时,根据 scope 信息对一个 AccessTokenModel 进行加工处理
|
||||
SaOAuth2Strategy.instance.refreshAccessTokenWorkByScope = at -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 根据 scope 信息对一个 ClientTokenModel 进行加工处理
|
||||
SaOAuth2Strategy.instance.workClientTokenByScope = at -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
#### grant_type 处理器
|
||||
``` java
|
||||
// 根据 grantType 构造一个 AccessTokenModel
|
||||
SaOAuth2Strategy.instance.grantTypeAuth = req -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
#### 凭证创建
|
||||
``` java
|
||||
// 创建一个 code value
|
||||
SaOAuth2Strategy.instance.createCodeValue = (clientId, loginId, scopes) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 创建一个 AccessToken value
|
||||
SaOAuth2Strategy.instance.createAccessToken = (clientId, loginId, scopes) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 创建一个 RefreshToken value
|
||||
SaOAuth2Strategy.instance.createRefreshToken = (clientId, loginId, scopes) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 创建一个 ClientToken value
|
||||
SaOAuth2Strategy.instance.createClientToken = (clientId, scopes) -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
#### 认证流程回调
|
||||
``` java
|
||||
// OAuth-Server端:未登录时返回的View
|
||||
SaOAuth2Strategy.instance.notLoginView = () -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// OAuth-Server端:确认授权时返回的View
|
||||
SaOAuth2Strategy.instance.confirmView = (clientId, scopes) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// OAuth-Server端:登录函数
|
||||
SaOAuth2Strategy.instance.doLoginHandle = (name, pwd) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// OAuth-Server端:用户在授权指定 client 前的检查,如果检查不通过,请直接抛出异常
|
||||
SaOAuth2Strategy.instance.userAuthorizeClientCheck = (loginId, clientId) -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
#### 其它
|
||||
``` java
|
||||
// 在创建 SaClientModel 时,设置其默认字段
|
||||
SaOAuth2Strategy.instance.setSaClientModelDefaultFields = (clientModel) -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -141,3 +141,64 @@ SaSsoClientUtil.buildSignoutMessage(Object loginId, SaLogoutParameter logoutPara
|
||||
详情请参考源码:[码云:SaSsoClientUtil.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/template/SaSsoClientUtil.java)
|
||||
|
||||
|
||||
|
||||
|
||||
## Sso-Server 所有可重写策略
|
||||
|
||||
``` java
|
||||
// 发送 Http 请求的处理函数
|
||||
SaSsoServerProcessor.instance.ssoServerTemplate.strategy.sendRequest = url -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 使用异步模式执行一个任务
|
||||
SaSsoServerProcessor.instance.ssoServerTemplate.strategy.asyncRun = fun -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 未登录时返回的 View
|
||||
SaSsoServerProcessor.instance.ssoServerTemplate.strategy.notLoginView = () -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// SSO-Server端:登录函数
|
||||
SaSsoServerProcessor.instance.ssoServerTemplate.strategy.doLoginHandle = (name, pwd) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
//SSO-Server端:在授权重定向之前的通知
|
||||
SaSsoServerProcessor.instance.ssoServerTemplate.strategy.jumpToRedirectUrlNotice = (redirectUrl) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// SSO-Server端:在校验 ticket 后,给 sso-client 端追加返回信息的函数
|
||||
SaSsoServerProcessor.instance.ssoServerTemplate.strategy.checkTicketAppendData = (loginId, result) -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
## Sso-Client 所有可重写策略
|
||||
|
||||
``` java
|
||||
// 发送 Http 请求的处理函数
|
||||
SaSsoClientProcessor.instance.ssoClientTemplate.strategy.sendRequest = url -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 自定义校验 ticket 返回值的处理逻辑 (每次从认证中心获取校验 ticket 的结果后调用)
|
||||
SaSsoClientProcessor.instance.ssoClientTemplate.strategy.ticketResultHandle = (ctr, back) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 转换:认证中心 centerId > 本地 loginId
|
||||
SaSsoClientProcessor.instance.ssoClientTemplate.strategy.convertCenterIdToLoginId = (centerId) -> {
|
||||
// ...
|
||||
}
|
||||
|
||||
// 转换:本地 loginId > 认证中心 centerId
|
||||
SaSsoClientProcessor.instance.ssoClientTemplate.strategy.convertLoginIdToCenterId = (loginId) -> {
|
||||
// ...
|
||||
}
|
||||
```
|
||||
|
@ -34,7 +34,7 @@ public class SaSsoClientStrategy {
|
||||
/**
|
||||
* 发送 Http 请求的处理函数
|
||||
*/
|
||||
public SendRequestFunction sendHttp = url -> {
|
||||
public SendRequestFunction sendRequest = url -> {
|
||||
return SaManager.getSaHttpTemplate().get(url);
|
||||
};
|
||||
|
||||
@ -72,7 +72,7 @@ public class SaSsoClientStrategy {
|
||||
* @return 返回的结果
|
||||
*/
|
||||
public SaResult requestAsSaResult(String url) {
|
||||
String body = sendHttp.apply(url);
|
||||
String body = sendRequest.apply(url);
|
||||
Map<String, Object> map = SaManager.getSaJsonTemplate().jsonToMap(body);
|
||||
return new SaResult(map);
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ public class SaSsoClientTemplate extends SaSsoTemplate {
|
||||
*/
|
||||
public Object getData(String path, Map<String, Object> paramMap) {
|
||||
String url = buildCustomPathUrl(path, paramMap);
|
||||
return strategy.sendHttp.apply(url);
|
||||
return strategy.sendRequest.apply(url);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,7 +174,7 @@ public class SaSsoClientTemplate extends SaSsoTemplate {
|
||||
|
||||
// 发起请求
|
||||
String finalUrl = SaFoxUtil.joinParam(pushUrl, paramsStr);
|
||||
return strategy.sendHttp.apply(finalUrl);
|
||||
return strategy.sendRequest.apply(finalUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user