lgsso-sdk 1.0.5 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +162 -112
- package/dist/lgsso-sdk.js +449 -2
- package/dist/lgsso-sdk.min.js +2 -0
- package/package.json +31 -31
- package/rollup.config.js +33 -0
- package/src/index.js +13 -270
- package/src/{api.js → request.js} +89 -77
- package/src/sso.js +238 -0
- package/src/utils.js +103 -0
- package/src/index.d.ts +0 -92
- package/webpack.config.js +0 -32
package/README.md
CHANGED
|
@@ -1,113 +1,163 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
LG SSO
|
|
4
|
-
|
|
5
|
-
## 安装
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
//
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
###
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
1
|
+
# lg-ssosdk
|
|
2
|
+
|
|
3
|
+
LG-SSO SDK 是一个用于实现单点登录(SSO)功能的JavaScript库,提供了token管理、登录状态维护、注销、跨应用跳转等功能,方便在Web应用中快速集成SSO认证机制。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
# 使用 npm 安装
|
|
7
|
+
npm install lg-ssosdk
|
|
8
|
+
|
|
9
|
+
# 使用 yarn 安装
|
|
10
|
+
yarn add lg-ssosdk
|
|
11
|
+
## 引入方式
|
|
12
|
+
// 引入默认实例
|
|
13
|
+
import lgsso from 'lg-ssosdk';
|
|
14
|
+
|
|
15
|
+
// 或创建自定义实例
|
|
16
|
+
import { createSSO } from 'lg-ssosdk';
|
|
17
|
+
const customSSO = createSSO();
|
|
18
|
+
## 初始化配置
|
|
19
|
+
|
|
20
|
+
使用SDK前必须先调用`init`方法进行初始化配置:
|
|
21
|
+
lgsso.init({
|
|
22
|
+
accessCodeKey: 'accessCode', // accessCode在URL中的参数名
|
|
23
|
+
tokenKey: 'scm_token', // token在存储中的键名
|
|
24
|
+
timeout: 5000, // 请求超时时间(毫秒)
|
|
25
|
+
headers: {}, // 自定义请求头
|
|
26
|
+
tokenApi: '/api/token', // 通过accessCode获取token的API地址
|
|
27
|
+
refreshCodeApi: '/api/refresh', // 刷新accessCode的API地址
|
|
28
|
+
logoutApi: '/api/logout', // 注销API地址
|
|
29
|
+
logOutUrl: '/login', // 登录页面URL
|
|
30
|
+
storage: localStorage, // 存储方式(localStorage/sessionStorage)
|
|
31
|
+
})
|
|
32
|
+
.then(result => {
|
|
33
|
+
console.log('初始化结果:', result);
|
|
34
|
+
});
|
|
35
|
+
### 配置参数说明
|
|
36
|
+
|
|
37
|
+
| 参数名 | 类型 | 默认值 | 说明 |
|
|
38
|
+
|--------|------|--------|------|
|
|
39
|
+
| accessCodeKey | String | 'accessCode' | accessCode在URL中的参数名 |
|
|
40
|
+
| tokenKey | String | 'scm_token' | token在storage中的存储键名 |
|
|
41
|
+
| timeout | Number | 5000 | 请求超时时间(ms) |
|
|
42
|
+
| headers | Object | {} | 自定义请求头 |
|
|
43
|
+
| tokenApi | String | '' | 通过accessCode获取token的API地址(必填) |
|
|
44
|
+
| refreshCodeApi | String | '' | 刷新accessCode的API地址 |
|
|
45
|
+
| logoutApi | String | '' | 注销API地址 |
|
|
46
|
+
| logOutUrl | String | '' | 登录页面URL |
|
|
47
|
+
| storage | Object | localStorage | 存储方式,需实现setItem和getItem方法 |
|
|
48
|
+
|
|
49
|
+
## 核心方法
|
|
50
|
+
|
|
51
|
+
### init(options)
|
|
52
|
+
|
|
53
|
+
初始化SDK,合并配置并验证有效性。如果URL中存在accessCode,会自动获取token;如果没有token,会跳转到登录页。
|
|
54
|
+
|
|
55
|
+
**参数**:
|
|
56
|
+
- `options`:配置选项,详见初始化配置部分
|
|
57
|
+
|
|
58
|
+
**返回**:`Promise<Object>` - 初始化结果
|
|
59
|
+
|
|
60
|
+
### getToken()
|
|
61
|
+
|
|
62
|
+
获取存储的token值。
|
|
63
|
+
|
|
64
|
+
**返回**:`String|null` - token值或null
|
|
65
|
+
const token = lgsso.getToken();
|
|
66
|
+
console.log('当前token:', token);
|
|
67
|
+
### removeToken()
|
|
68
|
+
|
|
69
|
+
删除存储的token。
|
|
70
|
+
lgsso.removeToken();
|
|
71
|
+
### logout()
|
|
72
|
+
|
|
73
|
+
退出登录,调用logoutApi并清除token,然后跳转到登录页。
|
|
74
|
+
|
|
75
|
+
**返回**:`Promise<Object>` - 退出结果
|
|
76
|
+
lgsso.logout()
|
|
77
|
+
.then(result => {
|
|
78
|
+
console.log('退出结果:', result);
|
|
79
|
+
});
|
|
80
|
+
### toUrl(redirectUrl)
|
|
81
|
+
|
|
82
|
+
使用当前token换取新的accessCode,并跳转到指定URL(自动在URL后添加accessCode参数)。
|
|
83
|
+
|
|
84
|
+
**参数**:
|
|
85
|
+
- `redirectUrl`:目标跳转地址
|
|
86
|
+
|
|
87
|
+
**返回**:`Promise<Object>` - 操作结果
|
|
88
|
+
lgsso.toUrl('https://example.com/target')
|
|
89
|
+
.then(result => {
|
|
90
|
+
console.log('跳转准备结果:', result);
|
|
91
|
+
});
|
|
92
|
+
### getAccessCode()
|
|
93
|
+
|
|
94
|
+
使用当前token换取新的accessCode。
|
|
95
|
+
|
|
96
|
+
**返回**:`Promise<Object>` - 包含accessCode的结果(在data字段中)
|
|
97
|
+
lgsso.getAccessCode()
|
|
98
|
+
.then(result => {
|
|
99
|
+
if (result.code === 0) {
|
|
100
|
+
console.log('新的accessCode:', result.data);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
### getConfig()
|
|
104
|
+
|
|
105
|
+
获取当前配置的副本。
|
|
106
|
+
|
|
107
|
+
**返回**:`Object|null` - 当前配置
|
|
108
|
+
const config = lgsso.getConfig();
|
|
109
|
+
console.log('当前配置:', config);
|
|
110
|
+
## 错误码说明
|
|
111
|
+
|
|
112
|
+
| 错误码 | 说明 |
|
|
113
|
+
|--------|------|
|
|
114
|
+
| -100 | 初始化相关错误(如缺少配置、配置无效等) |
|
|
115
|
+
| -101 | 未初始化(需先调用init方法) |
|
|
116
|
+
| -102 | 未配置logoutApi |
|
|
117
|
+
| -103 | 退出登录失败 |
|
|
118
|
+
| -104 | 跳转地址为空 |
|
|
119
|
+
| -105 | 未配置refreshCodeApi |
|
|
120
|
+
| -106 | 未找到有效token |
|
|
121
|
+
| -107 | 跳转失败 |
|
|
122
|
+
| -200 | 非浏览器环境使用request方法 |
|
|
123
|
+
| -201 | 响应数据不是有效的JSON格式 |
|
|
124
|
+
| -202 | 请求超时 |
|
|
125
|
+
| -203 | 网络请求失败 |
|
|
126
|
+
|
|
127
|
+
## 使用示例
|
|
128
|
+
// 初始化SDK
|
|
129
|
+
lgsso.init({
|
|
130
|
+
tokenApi: '/api/getToken',
|
|
131
|
+
refreshCodeApi: '/api/refreshCode',
|
|
132
|
+
logoutApi: '/api/logout',
|
|
133
|
+
logOutUrl: '/login'
|
|
134
|
+
})
|
|
135
|
+
.then(initResult => {
|
|
136
|
+
console.log('初始化结果:', initResult);
|
|
137
|
+
|
|
138
|
+
// 获取token
|
|
139
|
+
const token = lgsso.getToken();
|
|
140
|
+
console.log('当前token:', token);
|
|
141
|
+
|
|
142
|
+
// 跳转到其他应用
|
|
143
|
+
document.getElementById('gotoOtherApp').addEventListener('click', () => {
|
|
144
|
+
lgsso.toUrl('https://other-app.example.com')
|
|
145
|
+
.catch(err => console.error('跳转失败:', err));
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
// 退出登录
|
|
149
|
+
document.getElementById('logoutBtn').addEventListener('click', () => {
|
|
150
|
+
lgsso.logout()
|
|
151
|
+
.catch(err => console.error('退出失败:', err));
|
|
152
|
+
});
|
|
153
|
+
})
|
|
154
|
+
.catch(err => {
|
|
155
|
+
console.error('初始化失败:', err);
|
|
156
|
+
});
|
|
157
|
+
## 注意事项
|
|
158
|
+
|
|
159
|
+
1. 必须先调用`init`方法初始化后才能使用其他方法
|
|
160
|
+
2. `tokenApi`是必填配置项,用于通过accessCode获取token
|
|
161
|
+
3. 在非浏览器环境下使用时,部分依赖浏览器API的功能将不可用
|
|
162
|
+
4. 建议在应用入口处进行初始化,确保整个应用生命周期中都能使用SSO功能
|
|
113
163
|
|