Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nueip/cross-token-access


https://github.com/nueip/cross-token-access

javascript promise

Last synced: 30 days ago
JSON representation

Awesome Lists containing this project

README

        

# SSO-自有系統前端 SSO 封裝(SDK) Ver 2.0

# 主要

```text
dist/
├── cross-token-access.cjs.js (CommonJS)
├── cross-token-access.cjs.min.js (CommonJS, compressed)
├── cross-token-access.umd.js (UMD)
└── cross-token-access.umd.min.js (UMD, compressed)
```

# 依賴 & 注意事項

依賴:

- **axios**
- **lodash**
- **js-cookie**
- **promise.prototype.finally**

注意事項:

- 依賴套件已打包封裝,無需再外部引用
- API 採用 Axios 技術
- Axios 支援 finally,引用 promise.prototype.finally 方法
- Axios 攔截器 (interceptor) 有加入請求重複發送機制

# 跨域信任域名

- `nueip.com`
- `nueip.site`

# 使用說明

## 安裝

Script tag

```html

```

npm

```bash
npm install @nueip/cross-token-access
```

## 用法

```js
// 實體化
var tokenInjection = new TokenInjection(options);
```

- **options**
- Type: `Object`
- 參考 [options](#options)

## 範例

請見[範例](./examples/index.html)

# Options

### autopilot

- Type: `Boolean`
- Default: `true`
- note: 是否自動初始化 & 刷新同步

### sso_url

- Type: `String`
- Default: `empty string`
- note: SSO 伺服器 URL

### cookie_prefix

- Type: `String`
- Default: `empty string`
- note: Cookie 自定義前綴字串

### redirect_url

- Type: `String`
- Default: `empty string`
- note: 重新定向網址

### xhr_with

- Type: `Boolean`
- Default: `false`
- note: 是否配置 X-Requested-With 抬頭

### onLogout

- Type: `Function`
- Default: `null`
- note: 非登入狀態的回調函式

### unauthorized

- Type: `Function`
- Default: `null`
- note: 401 未授權的 Callback

### maxSyncTimesPerMinute

- Type: `number`
- Default: 3
- note: 每分鐘同步 token 最大次數限制

### maxRefreshTimesPerMinute

- Type: `number`
- Default: 3
- note: 每分鐘刷新 token 最大次數限制

# Methods

## init()

- 初始化執行
- 自動同步/刷新 Token
- 自動登出倒數

## sync()

- return

- Promise 方法

- 執行一次,向 oAuth Server 同步 Token 資訊,同步錯誤時,檢查是否為登入狀態,否時刪除 Token

## autoSync(interval)

- interval
- Type: `Number`
- Note: 多少個間隔,每個間為 1000 毫秒
- 定期執行,向 oAuth Server 同步 Token 資訊
- 執行條件
- Cookie 中 tkchecksum 是否與 LocalStorage 中的 token_checksum 不一樣
- Axios 未執行過或已執行完成
- 多視窗時有可能同時執行,待觀察
- 請求次數超過,自動登出
- 執行錯誤時關閉自動同步 3 秒後重啟

## autoSyncStop()

- 停止自動同步 Token 內容

## refresh()

- return
- Promise 方法
- throw
- 沒有 Refresh Token 時丟出
- 執行一次,向 oAuth Server 執行 Refresh Token
- 執行條件
- 必需有 refresh_token 金鑰:localStorage.token_refresh_token
- 當現在時間超過到期時間 - TokenRefreshBefore 時觸發更新 token

## autoRefresh(interval)

- interval
- Type: `Number`
- Note: 多少個間隔,每個間為 1000 毫秒
- 定期執行,向 oAuth Server 同步 Token 資訊
- 執行條件
- 即將過期
- Axios 未執行過或已執行完成
- 多視窗時有可能同時執行,待觀察
- 請求次數超過,自動登出
- 執行錯誤時關閉自動同步 3 秒後重啟

## autoRefreshStop

- 停止自動刷新 Token

## getToken()

- return
- Type: `String`
- Local Storage 中的 Token
- 取得 Local Storage Token

## getLang()

- return
- Type: `String`
- Cookie 中的語系代號
- 取得當前語系

## validate(token)

驗證 Token

- token
- Type: `String`
- 本地端要被驗證的 Token
- return
- Promise 方法

## loginIAM()

- 開啟 IAM 登入頁面,另開新視窗
- 轉導自動帶入GET參數 redirect_uri={指定重新定向網址}

## logoutIAM()

- 開啟 IAM 登出頁面

## isLogin()

- return
- Boolean
- 判斷是否為登入狀態

## axiosCreate()

- config
- Type: `Object`
- axios 請求參數
- 只支援 baseURL, withCredentials, timeout, headers
- return
- Boolean
- axios 全域設定輸入接口

# 瀏覽器支援

- ### Chrome (latest)

- ### Firefox (latest)

- ### Safari (latest)

- ### Edge (latest)

- ### ~~Internet Explorer 11~~