lgsso-sdk 1.0.5 → 1.0.7

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 CHANGED
@@ -1,113 +1,163 @@
1
- # lgsso-sdk
2
-
3
- LG SSO登录工具库,用于处理单点登录流程、token管理和系统间跳转,支持Vue Router集成以确保路由状态同步。
4
-
5
- ## 安装npm install lgsso-sdk --save
6
- #
7
- yarn add lgsso-sdk
8
- ## 引入// ES模块引入
9
- import lgsso from 'lgsso-sdk';
10
-
11
- // CommonJS引入
12
- const lgsso = require('lgsso-sdk').default;
13
- ## 初始化
14
- ### 基础初始化// 在应用入口处初始化
15
- async function setupApp() {
16
- const result = await lgsso.init({
17
- logOutUrl: "http://lgsso2-watest.zlgx.com/",
18
- tokenApi: "/v2/scm/sso/exchangeToken",
19
- refreshCodeApi: "/v2/scm/sso/exchangeAccessCode",
20
- logoutApi: "/v2/scm/sso/logout",
21
- accessCodeKey: "accessCode",
22
- tokenKey: "scm_token",
23
- timeout: 8000, // 可选,默认5000ms
24
- headers: { // 可选,自定义请求头
25
- 'X-App-ID': 'your-application-id'
26
- }
27
- });
28
-
29
- // 处理初始化结果
30
- if (result.code === 0) {
31
- console.log('初始化成功', result.data);
32
- // 初始化完成后执行后续逻辑
33
- startApplication();
34
- } else {
35
- console.error('初始化失败', result.msg);
36
- }
37
- }
38
-
39
- // 启动应用
40
- setupApp();
41
- ### Vue Router集成(推荐)
42
- 为确保路由参数同步和重定向场景下的参数正确移除,建议传入Vue Router实例:
43
- import router from './router'; // 导入你的Vue Router实例
44
-
45
- async function setupApp() {
46
- const result = await lgsso.init({
47
- // ...其他配置
48
- router: router, // 传入Vue Router实例
49
- });
50
- }
51
- ## 核心方法
52
-
53
- ### 1. 获取当前tokenconst token = lgsso.getToken();
54
- if (token) {
55
- console.log('当前token:', token);
56
- } else {
57
- console.log('未找到token');
58
- }
59
- ### 2. 退出登录async function handleLogout() {
60
- const result = await lgsso.logout();
61
- if (result.code !== 0) {
62
- console.error('退出失败:', result.msg);
63
- }
64
- }
65
- ### 3. 跳转到其他系统async function goToOtherSystem() {
66
- const result = await lgsso.toUrl('https://other-system.com');
67
- if (result.code !== 0) {
68
- console.error('跳转失败:', result.msg);
69
- }
70
- }
71
- ### 4. 手动删除token// 仅删除本地token,不调用退出接口
72
- lgsso.removeToken();
73
- ### 5. 获取accessCode(通过token换取)async function fetchAccessCode() {
74
- const result = await lgsso.getAccessCode();
75
- if (result.code === 0) {
76
- console.log('获取accessCode成功:', result.data);
77
- // 可使用result.data进行后续操作(如拼接URL参数)
78
- } else {
79
- console.error('获取失败:', result.msg);
80
- }
81
- }
82
- ## 错误码说明
83
-
84
- | 错误码 | 说明 |
85
- |--------|------|
86
- | 0 | 成功 |
87
- | -100 | 初始化失败(如配置错误) |
88
- | -101 | 未初始化(需先调用init) |
89
- | -102 | 未配置logoutApi |
90
- | -103 | 退出失败(接口请求错误) |
91
- | -104 | 未提供跳转地址(toUrl方法缺少参数) |
92
- | -105 | 未配置refreshCodeApi |
93
- | -106 | 未找到有效token |
94
- | -107 | 跳转失败(接口请求错误) |
95
- | -108 | 传入的router不是有效的Vue Router实例 |
96
- | -200 | 非浏览器环境(调用了依赖window的方法) |
97
- | -201 | 响应数据格式错误 |
98
- | -202 | 请求超时 |
99
- | -203 | 网络请求失败 |
100
-
101
- ## 构建与发布# 安装依赖
102
- npm install
103
-
104
- # 开发模式(实时监听)
105
- npm run dev
106
-
107
- # 构建生产版本
108
- npm run build
109
-
110
- # 发布到npm(需先登录)
111
- npm publish
112
- 构建后会在`dist`目录生成`lgsso-sdk.js`文件,可直接引入使用。
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