mirror of
https://gitee.com/dromara/sa-token.git
synced 2024-11-30 10:58:05 +08:00
文档新增SSO自定义API路由的示例
This commit is contained in:
parent
2401726e01
commit
ad79e3595e
@ -39,6 +39,7 @@
|
||||
- [SSO模式三 Http请求获取会话](/sso/sso-type3)
|
||||
- [SSO整合:配置域名校验](/sso/sso-check-domain)
|
||||
- [SSO整合:定制化登录页面](/sso/sso-custom-login)
|
||||
- [SSO整合:自定义API路由](/sso/sso-custom-api)
|
||||
- [SSO整合:前后端分离下的整合方案](/sso/sso-h5)
|
||||
- [SSO整合:常见问题总结](/sso/sso-questions)
|
||||
- [Sa-Sso-Pro:单点登录商业版](/sso/sso-pro)
|
||||
|
90
sa-token-doc/doc/sso/sso-custom-api.md
Normal file
90
sa-token-doc/doc/sso/sso-custom-api.md
Normal file
@ -0,0 +1,90 @@
|
||||
# SSO整合-自定义 API 路由
|
||||
|
||||
---
|
||||
|
||||
### 方式一:修改全局变量
|
||||
|
||||
在之前的章节中,我们演示了如何搭建一个SSO认证中心:
|
||||
``` java
|
||||
/**
|
||||
* Sa-Token-SSO Server端 Controller
|
||||
*/
|
||||
@RestController
|
||||
public class SsoServerController {
|
||||
|
||||
// SSO-Server端:处理所有SSO相关请求
|
||||
@RequestMapping("/sso/*")
|
||||
public Object ssoRequest() {
|
||||
return SaSsoHandle.serverRequest();
|
||||
}
|
||||
|
||||
// ... 其它方法
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
这种写法集成简单但却不够灵活。例如认证中心地址只能是:`http://{host}:{port}/sso/auth`,如果我们想要自定义其API地址,应该怎么做呢?
|
||||
|
||||
我们可以打开SSO模块相关源码,有关 API 的设计都定义在:[SaSsoConsts.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-core/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java)
|
||||
中,这些值从架构设计上来讲属于常量却并未使用 `final` 修饰,目的就是为了方便我们对其二次修改。
|
||||
|
||||
例如,我们可以在 Main 方法启动类或者 SSO 配置方法中修改变量值:
|
||||
``` java
|
||||
// 配置SSO相关参数
|
||||
@Autowired
|
||||
private void configSso(SaTokenConfig cfg) {
|
||||
// 自定义API地址
|
||||
SaSsoConsts.Api.ssoAuth = "/sso/auth2";
|
||||
// ...
|
||||
|
||||
// SSO 相关配置
|
||||
cfg.sso.setXxx ... ;
|
||||
}
|
||||
```
|
||||
|
||||
启动项目,统一认证地址就被我们修改成了:`http://{host}:{port}/sso/auth2`
|
||||
|
||||
|
||||
### 方式二:拆分路由入口
|
||||
根据上述路由入口:`@RequestMapping("/sso/*")`,我们给它起一个合适的名字 —— 聚合式路由。
|
||||
|
||||
与之对应的,我们可以将其修改为拆分式路由:
|
||||
|
||||
``` java
|
||||
/**
|
||||
* Sa-Token-SSO Server端 Controller
|
||||
*/
|
||||
@RestController
|
||||
public class SsoServerController {
|
||||
|
||||
// SSO-Server:统一认证地址
|
||||
@RequestMapping("/sso/auth")
|
||||
public Object ssoAuth() {
|
||||
return SaSsoHandle.ssoAuth();
|
||||
}
|
||||
|
||||
// SSO-Server:RestAPI 登录接口
|
||||
@RequestMapping("/sso/doLogin")
|
||||
public Object ssoDoLogin() {
|
||||
return SaSsoHandle.ssoDoLogin();
|
||||
}
|
||||
|
||||
// SSO-Server:校验ticket 获取账号id
|
||||
@RequestMapping("/sso/checkTicket")
|
||||
public Object ssoCheckTicket() {
|
||||
return SaSsoHandle.ssoCheckTicket();
|
||||
}
|
||||
|
||||
// SSO-Server:单点注销
|
||||
@RequestMapping("/sso/logout")
|
||||
public Object ssoLogout() {
|
||||
return SaSsoHandle.ssoServerLogout();
|
||||
}
|
||||
|
||||
// ... 其它方法
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
拆分式路由 与 聚合式路由 在功能上完全等价,且提供了更为细致的路由管控。
|
||||
|
Loading…
Reference in New Issue
Block a user