Skip to content

Commit 4a17f6d

Browse files
代码优化及工程结构调整
1 parent b214ca8 commit 4a17f6d

33 files changed

+585
-275
lines changed

README.md

Lines changed: 153 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,153 @@
1-
### YMP-SSO (Single Sign-On)
2-
3-
#### Maven包依赖
4-
5-
<dependency>
6-
<groupId>net.ymate.module</groupId>
7-
<artifactId>ymate-module-sso</artifactId>
8-
<version>2.0.0</version>
9-
</dependency>
10-
11-
#### 模块配置参数说明
12-
13-
#-------------------------------------
14-
# module.sso 模块初始化参数
15-
#-------------------------------------
16-
17-
# 在Cookie中存储令牌的名称, 默认值: module.sso_token
18-
ymp.configs.module.sso.token_cookie_name=
19-
20-
# 令牌存储在请求头中的名称, 默认值: X-ModuleSSO-Token
21-
ymp.configs.module.sso.token_header_name=
22-
23-
# 令牌URL参数名称, 默认值: token
24-
ymp.configs.module.sso.token_param_name=
25-
26-
# 令牌生命周期(秒), 默认值为0, 小于等于0表示不启用
27-
ymp.configs.module.sso.token_max_age=
28-
29-
# 令牌有效性验证的时间间隔(秒), 默认值: 0
30-
ymp.configs.module.sso.token_validation_time_interval=
31-
32-
# 缓存名称前缀, 默认值: ""
33-
ymp.configs.module.sso.cache_name_prefix=
34-
35-
# 开启多会话模式(即同一账号允许多处登录), 默认值: false
36-
ymp.configs.module.sso.multi_session_enabled=
37-
38-
# 同一账号最多会话数量,小于等于0表示不限制
39-
ymp.configs.module.sso.multi_session_max_count=
40-
41-
# 开启会话的IP地址检查, 默认值: false
42-
ymp.configs.module.sso.ip_check_enabled=
43-
44-
# 是否为客户端模式, 默认为false
45-
ymp.configs.module.sso.client_mode=
46-
47-
# 指定服务端基准URL路径(若客户端模式开启时则此项必填), 必须以'http://'或'https://'开始并以'/'结束, 如: http://www.ymate.net/service/, 默认值: 空
48-
ymp.configs.module.sso.service_base_url=
49-
50-
# 客户端与服务端之间通讯请求参数签名以及令牌加解密附加密钥, 默认值: ""
51-
ymp.configs.module.sso.service_auth_key=
52-
53-
# 服务请求映射前缀(不允许'/'开始和结束), 默认值: ""
54-
ymp.configs.module.sso.service_prefix=
55-
56-
# 是否注册通用令牌验证控制器, 默认值: false
57-
ymp.configs.module.sso.general_auth_enabled=
58-
59-
# 令牌分析适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenAdapter
60-
ymp.configs.module.sso.token_adapter_class=
61-
62-
# 令牌存储适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenStorageAdapter
63-
ymp.configs.module.sso.token_storage_adapter_class=
64-
65-
# 令牌自定义属性加载适配器接口实现, 非客户端模式时有效, 默认值: 空
66-
ymp.configs.module.sso.token_attribute_adapter_class=
67-
68-
# 检测令牌无效时重定向URL地址(用于跳转至用户登录页面, 如: login?redirect_url=${redirect_url}), 默认值: 空
69-
ymp.configs.module.sso.token_invalid_redirect_url=
70-
71-
# 检测令牌已存在时重定向URL地址(用于登录成功后跳转), 默认值: 空
72-
ymp.configs.module.sso.token_already_redirect_url=
73-
74-
# 是否开启会话安全确认, 默认值: false
75-
ymp.configs.module.sso.token_confirm_enabled=
76-
77-
# 会话安全确认处理器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenConfirmHandler
78-
ymp.configs.module.sso.token_confirm_handler_class=
79-
80-
# 会话安全确认重定向URL地址, 默认值: confirm?redirect_url=${redirect_url}
81-
ymp.configs.module.sso.token_confirm_redirect_url=
82-
83-
# 会话安全确认超时时间(分钟),小于等于0则使用默认值: 30
84-
ymp.configs.module.sso.token_confirm_timeout=
85-
86-
#### 示例代码:
87-
88-
- 配置用户会话检查拦截器,该拦截器已集成单点登录相关处理逻辑:
89-
90-
@RequestMapping(value = "/user/profile/edit", method = Type.HttpMethod.POST)
91-
@UserSessionCheck
92-
public IView __doEditUserProfile(@RequestParam String nickName, ......) throws Exception {
93-
// ...... 省略
94-
return WebResult.success().toJsonView();
95-
}
96-
97-
- 通过代码操作用户的登录授权令牌对象:
98-
99-
ISingleSignOn singleSignOn = SingleSignOn.get();
100-
IToken token = singleSignOn.getCurrentToken();
101-
if (token == null) {
102-
// 若返回值为空则表示令牌对象不存在
103-
token = singleSignOn.createToken("uid_xxx", "127.0.0.1", "FireFox");
104-
// 存储令牌并使其生效
105-
singleSignOn.saveOrUpdateToken(token);
106-
}
107-
if (token != null) {
108-
// 令牌唯一标识
109-
token.getId();
110-
// 用户唯一标识
111-
token.getUid();
112-
// 用户IP地址
113-
token.getRemoteAddr();
114-
// 用户代理信息
115-
token.getUserAgent();
116-
// 令牌对象创建时间
117-
token.getCreateTime();
118-
// 令牌扩展属性
119-
token.getAttributes();
120-
}
121-
122-
#### One More Thing
123-
124-
YMP不仅提供便捷的Web及其它Java项目的快速开发体验,也将不断提供更多丰富的项目实践经验。
125-
126-
感兴趣的小伙伴儿们可以加入 官方QQ群480374360,一起交流学习,帮助YMP成长!
127-
128-
了解更多有关YMP框架的内容,请访问官网:http://www.ymate.net/
1+
# YMATE-MODULE-SSO
2+
3+
[![Maven Central status](https://img.shields.io/maven-central/v/net.ymate.module/ymate-module-unpack.svg)](https://search.maven.org/artifact/net.ymate.module/ymate-module-unpack)
4+
[![LICENSE](https://img.shields.io/github/license/suninformation/ymate-module-unpack.svg)](https://gitee.com/suninformation/ymate-module-unpack/blob/master/LICENSE)
5+
6+
基于 YMP 框架实现的单点登录模块封装。
7+
8+
9+
10+
## Maven包依赖
11+
12+
```xml
13+
<dependency>
14+
<groupId>net.ymate.module</groupId>
15+
<artifactId>ymate-module-unpack</artifactId>
16+
<version>1.0.0</version>
17+
</dependency>
18+
```
19+
20+
21+
22+
## 模块配置参数说明
23+
24+
```properties
25+
#-------------------------------------
26+
# module.sso 模块初始化参数
27+
#-------------------------------------
28+
29+
# 在Cookie中存储令牌的名称, 默认值: module.sso_token
30+
ymp.configs.module.sso.token_cookie_name=
31+
32+
# 令牌存储在请求头中的名称, 默认值: X-ModuleSSO-Token
33+
ymp.configs.module.sso.token_header_name=
34+
35+
# 令牌URL参数名称, 默认值: token
36+
ymp.configs.module.sso.token_param_name=
37+
38+
# 令牌生命周期(秒), 默认值为0, 小于等于0表示不启用
39+
ymp.configs.module.sso.token_max_age=
40+
41+
# 令牌有效性验证的时间间隔(秒), 默认值: 0
42+
ymp.configs.module.sso.token_validation_time_interval=
43+
44+
# 缓存名称前缀, 默认值: ""
45+
ymp.configs.module.sso.cache_name_prefix=
46+
47+
# 开启多会话模式(即同一账号允许多处登录), 默认值: false
48+
ymp.configs.module.sso.multi_session_enabled=
49+
50+
# 同一账号最多会话数量,小于等于0表示不限制
51+
ymp.configs.module.sso.multi_session_max_count=
52+
53+
# 开启会话的IP地址检查, 默认值: false
54+
ymp.configs.module.sso.ip_check_enabled=
55+
56+
# 是否为客户端模式, 默认为false
57+
ymp.configs.module.sso.client_mode=
58+
59+
# 指定服务端基准URL路径(若客户端模式开启时则此项必填), 必须以'http://'或'https://'开始并以'/'结束, 如: http://www.ymate.net/service/, 默认值: 空
60+
ymp.configs.module.sso.service_base_url=
61+
62+
# 客户端与服务端之间通讯请求参数签名以及令牌加解密附加密钥, 默认值: ""
63+
ymp.configs.module.sso.service_auth_key=
64+
65+
# 服务请求映射前缀(不允许'/'开始和结束), 默认值: ""
66+
ymp.configs.module.sso.service_prefix=
67+
68+
# 是否注册通用令牌验证控制器, 默认值: false
69+
ymp.configs.module.sso.general_auth_enabled=
70+
71+
# 令牌分析适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenAdapter
72+
ymp.configs.module.sso.token_adapter_class=
73+
74+
# 令牌存储适配器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenStorageAdapter
75+
ymp.configs.module.sso.token_storage_adapter_class=
76+
77+
# 令牌自定义属性加载适配器接口实现, 非客户端模式时有效, 默认值: 空
78+
ymp.configs.module.sso.token_attribute_adapter_class=
79+
80+
# 检测令牌无效时重定向URL地址(用于跳转至用户登录页面, 如: login?redirect_url=${redirect_url}), 默认值: 空
81+
ymp.configs.module.sso.token_invalid_redirect_url=
82+
83+
# 检测令牌已存在时重定向URL地址(用于登录成功后跳转), 默认值: 空
84+
ymp.configs.module.sso.token_already_redirect_url=
85+
86+
# 是否开启会话安全确认, 默认值: false
87+
ymp.configs.module.sso.token_confirm_enabled=
88+
89+
# 会话安全确认处理器接口实现, 默认值: net.ymate.module.sso.impl.DefaultTokenConfirmHandler
90+
ymp.configs.module.sso.token_confirm_handler_class=
91+
92+
# 会话安全确认重定向URL地址, 默认值: confirm?redirect_url=${redirect_url}
93+
ymp.configs.module.sso.token_confirm_redirect_url=
94+
95+
# 会话安全确认超时时间(分钟),小于等于0则使用默认值: 30
96+
ymp.configs.module.sso.token_confirm_timeout=
97+
```
98+
99+
100+
101+
## 示例代码
102+
103+
配置用户会话检查拦截器,该拦截器已集成单点登录相关处理逻辑:
104+
105+
```java
106+
@RequestMapping(value = "/user/profile/edit", method = Type.HttpMethod.POST)
107+
@UserSessionCheck
108+
public IView doEditUserProfile(@RequestParam String nickName, ......) throws Exception {
109+
// ...... 省略
110+
return WebResult.success().toJsonView();
111+
}
112+
```
113+
114+
通过代码操作用户的登录授权令牌对象:
115+
116+
```java
117+
ISingleSignOn singleSignOn = SingleSignOn.get();
118+
IToken token = singleSignOn.getCurrentToken();
119+
if (token == null) {
120+
// 若返回值为空则表示令牌对象不存在
121+
token = singleSignOn.createToken("uid_xxx", "127.0.0.1", "FireFox");
122+
// 存储令牌并使其生效
123+
singleSignOn.saveOrUpdateToken(token);
124+
}
125+
if (token != null) {
126+
// 令牌唯一标识
127+
token.getId();
128+
// 用户唯一标识
129+
token.getUid();
130+
// 用户IP地址
131+
token.getRemoteAddr();
132+
// 用户代理信息
133+
token.getUserAgent();
134+
// 令牌对象创建时间
135+
token.getCreateTime();
136+
// 令牌扩展属性
137+
token.getAttributes();
138+
}
139+
```
140+
141+
142+
143+
## One More Thing
144+
145+
YMP 不仅提供便捷的 Web 及其它 Java 项目的快速开发体验,也将不断提供更多丰富的项目实践经验。
146+
147+
感兴趣的小伙伴儿们可以加入官方 QQ 群:[480374360](https://qm.qq.com/cgi-bin/qm/qr?k=3KSXbRoridGeFxTVA8HZzyhwU_btZQJ2),一起交流学习,帮助 YMP 成长!
148+
149+
如果喜欢 YMP,希望得到你的支持和鼓励!
150+
151+
![Donation Code](https://ymate.net/img/donation_code.png)
152+
153+
了解更多有关 YMP 框架的内容,请访问官网:[https://ymate.net](https://ymate.net)

0 commit comments

Comments
 (0)