mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-09-19 18:22:15 +08:00
重构SSO模块,静态式API改为实例式
This commit is contained in:
@@ -83,7 +83,7 @@ http://{host}:{port}/sso/checkTicket
|
||||
|
||||
### 4、单点注销接口
|
||||
``` url
|
||||
http://{host}:{port}/sso/logout
|
||||
http://{host}:{port}/sso/signout
|
||||
```
|
||||
|
||||
此接口有两种调用方式
|
||||
@@ -92,7 +92,7 @@ http://{host}:{port}/sso/logout
|
||||
例如:
|
||||
|
||||
``` url
|
||||
http://{host}:{port}/sso/logout?back=xxx
|
||||
http://{host}:{port}/sso/signout?back=xxx
|
||||
```
|
||||
用户注销成功后将返回 back 地址
|
||||
|
||||
@@ -109,7 +109,7 @@ http://{host}:{port}/sso/logout?back=xxx
|
||||
|
||||
例如:
|
||||
``` url
|
||||
http://{host}:{port}/sso/logout?loginId={value}×tamp={value}&nonce={value}&sign={value}
|
||||
http://{host}:{port}/sso/signout?loginId={value}×tamp={value}&nonce={value}&sign={value}
|
||||
```
|
||||
|
||||
将返回 json 数据结果,形如:
|
||||
|
@@ -15,7 +15,7 @@ public class SsoServerController {
|
||||
// SSO-Server端:处理所有SSO相关请求
|
||||
@RequestMapping("/sso/*")
|
||||
public Object ssoRequest() {
|
||||
return SaSsoHandle.serverRequest();
|
||||
return SaSsoProcessor.instance.serverDister();
|
||||
}
|
||||
|
||||
// ... 其它代码
|
||||
@@ -25,8 +25,9 @@ public class SsoServerController {
|
||||
|
||||
这种写法集成简单但却不够灵活。例如认证中心地址只能是:`http://{host}:{port}/sso/auth`,如果我们想要自定义其API地址,应该怎么做呢?
|
||||
|
||||
我们可以打开SSO模块相关源码,有关 API 的设计都定义在:[SaSsoConsts.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/SaSsoConsts.java)
|
||||
中,这些值从架构设计上来讲属于常量却并未使用 `final` 修饰,目的就是为了方便我们对其二次修改。
|
||||
打开SSO模块相关源码,有关 API 的设计都定义在:
|
||||
[ApiName.java](https://gitee.com/dromara/sa-token/blob/master/sa-token-plugin/sa-token-sso/src/main/java/cn/dev33/satoken/sso/name/ApiName.java)
|
||||
中,我们可以对其进行二次修改。
|
||||
|
||||
例如,我们可以在 Main 方法启动类或者 SSO 配置方法中修改变量值:
|
||||
``` java
|
||||
@@ -34,7 +35,7 @@ public class SsoServerController {
|
||||
@Autowired
|
||||
private void configSso(SaSsoConfig sso) {
|
||||
// 自定义API地址
|
||||
SaSsoConsts.Api.ssoAuth = "/sso/auth2";
|
||||
SaSsoUtil.ssoTemplate.apiName.ssoAuth = "/sso/auth2";
|
||||
// ...
|
||||
|
||||
// SSO 相关配置
|
||||
@@ -60,25 +61,25 @@ public class SsoServerController {
|
||||
// SSO-Server:统一认证地址
|
||||
@RequestMapping("/sso/auth")
|
||||
public Object ssoAuth() {
|
||||
return SaSsoHandle.ssoAuth();
|
||||
return SaSsoProcessor.instance.ssoAuth();
|
||||
}
|
||||
|
||||
// SSO-Server:RestAPI 登录接口
|
||||
@RequestMapping("/sso/doLogin")
|
||||
public Object ssoDoLogin() {
|
||||
return SaSsoHandle.ssoDoLogin();
|
||||
return SaSsoProcessor.instance.ssoDoLogin();
|
||||
}
|
||||
|
||||
// SSO-Server:校验ticket 获取账号id
|
||||
@RequestMapping("/sso/checkTicket")
|
||||
public Object ssoCheckTicket() {
|
||||
return SaSsoHandle.ssoCheckTicket();
|
||||
return SaSsoProcessor.instance.ssoCheckTicket();
|
||||
}
|
||||
|
||||
// SSO-Server:单点注销
|
||||
@RequestMapping("/sso/logout")
|
||||
public Object ssoLogout() {
|
||||
return SaSsoHandle.ssoServerLogout();
|
||||
@RequestMapping("/sso/signout")
|
||||
public Object ssoSignout() {
|
||||
return SaSsoProcessor.instance.ssoSignout();
|
||||
}
|
||||
|
||||
// ... 其它方法
|
||||
|
@@ -30,7 +30,7 @@ public class H5Controller {
|
||||
// 根据ticket进行登录
|
||||
@RequestMapping("/sso/doLoginByTicket")
|
||||
public SaResult doLoginByTicket(String ticket) {
|
||||
Object loginId = SaSsoHandle.checkTicket(ticket, "/sso/doLoginByTicket");
|
||||
Object loginId = SaSsoProcessor.instance.checkTicket(ticket, "/sso/doLoginByTicket");
|
||||
if(loginId != null) {
|
||||
StpUtil.login(loginId);
|
||||
return SaResult.data(StpUtil.getTokenValue());
|
||||
|
@@ -75,7 +75,7 @@ public Object ssoRequest() {
|
||||
if(req.isPath("/sso/auth") && req.hasParam("redirect") == false && StpUtil.isLogin()) {
|
||||
return SaHolder.getResponse().redirect("/home");
|
||||
}
|
||||
return SaSsoHandle.serverRequest();
|
||||
return SaSsoProcessor.instance.serverDister();
|
||||
}
|
||||
```
|
||||
|
||||
|
@@ -95,7 +95,7 @@ public class SsoServerController {
|
||||
*/
|
||||
@RequestMapping("/sso/*")
|
||||
public Object ssoRequest() {
|
||||
return SaSsoHandle.serverRequest();
|
||||
return SaSsoProcessor.instance.serverDister();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -170,7 +170,7 @@ sa-token:
|
||||
# SSO-Server端-单点登录授权地址
|
||||
auth-url: http://sso.stp.com:9000/sso/auth
|
||||
# SSO-Server端-单点注销地址
|
||||
slo-url: http://sso.stp.com:9000/sso/logout
|
||||
slo-url: http://sso.stp.com:9000/sso/signout
|
||||
|
||||
# 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
|
||||
alone-redis:
|
||||
@@ -195,7 +195,7 @@ server.port=9001
|
||||
# SSO-Server端-单点登录授权地址
|
||||
sa-token.sso.auth-url=http://sso.stp.com:9000/sso/auth
|
||||
# SSO-Server端-单点注销地址
|
||||
sa-token.sso.slo-url=http://sso.stp.com:9000/sso/logout
|
||||
sa-token.sso.slo-url=http://sso.stp.com:9000/sso/signout
|
||||
|
||||
# 配置 Sa-Token 单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis)
|
||||
# Redis数据库索引
|
||||
@@ -219,9 +219,9 @@ sa-token.alone-redis.timeout=10s
|
||||
* SSO模式一,Client端 Demo
|
||||
*/
|
||||
@SpringBootApplication
|
||||
public class SaSsoClientApplication {
|
||||
public class SaSso1ClientApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SaSsoClientApplication.class, args);
|
||||
SpringApplication.run(SaSso1ClientApplication.class, args);
|
||||
System.out.println("\nSa-Token SSO模式一 Client端启动成功");
|
||||
}
|
||||
}
|
||||
|
@@ -151,7 +151,7 @@ public class SsoClientController {
|
||||
*/
|
||||
@RequestMapping("/sso/*")
|
||||
public Object ssoRequest() {
|
||||
return SaSsoHandle.clientRequest();
|
||||
return SaSsoProcessor.instance.clientDister();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -220,9 +220,9 @@ sa-token.alone-redis.timeout=10s
|
||||
#### 3.5、写启动类
|
||||
``` java
|
||||
@SpringBootApplication
|
||||
public class SaSsoClientApplication {
|
||||
public class SaSso2ClientApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(SaSsoClientApplication.class, args);
|
||||
SpringApplication.run(SaSso2ClientApplication.class, args);
|
||||
System.out.println("\nSa-Token-SSO Client端启动成功");
|
||||
}
|
||||
}
|
||||
|
@@ -236,7 +236,7 @@ sa-token:
|
||||
# 打开单点注销功能
|
||||
is-slo: true
|
||||
# 单点注销地址
|
||||
slo-url: http://sa-sso-server.com:9000/sso/logout
|
||||
slo-url: http://sa-sso-server.com:9000/sso/signout
|
||||
# 接口调用秘钥
|
||||
secretkey: kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
|
||||
```
|
||||
@@ -245,7 +245,7 @@ sa-token:
|
||||
# 打开单点注销功能
|
||||
sa-token.sso.is-slo=true
|
||||
# 单点注销地址
|
||||
sa-token.sso.slo-url=http://sa-sso-server.com:9000/sso/logout
|
||||
sa-token.sso.slo-url=http://sa-sso-server.com:9000/sso/signout
|
||||
# 接口调用秘钥
|
||||
sa-token.sso.secretkey=kQwIOrYvnXmSDkwEiFngrKidMcdrgKor
|
||||
```
|
||||
|
Reference in New Issue
Block a user