1.4.7 • Published 1 year ago

@langge-data/avanger-sdk v1.4.7

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

朗歌前端基座sdk

sdk初始化

在主应用中会初始化sdk,挂载在window中,微应用可通过window.avanger判断是否已经初始化sdk

在微应用中调用

avangerSdk.init({
  appId: 1,            // 应用ID,默认 0
  loginHost: SSO_URL,  // SSO登录域名
  authHost: AUTH_URL,  // 权限平台域名
})

可在本地开发时不报错,并调用部分sdk可用功能,包裹登录,登出等

版本

  • v1.2.0
  • v1.3.0 更新:修复获取页面权限获取错误问题
  • v1.4.0 新增:接入权限平台,新增获取权限,用户信息功能
  • v1.4.1 更新:支持自定义本地存储前缀
  • v1.4.2 修复:解决登出token问题
  • v1.4.6 更新:登录失败新增Toast提示错误信息
  • v1.4.7 fix: 处理版本号不一致问题

功能概括

1. 引入SDK

// 安装依赖
npm install @langge-data/avanger-sdk --save

// 文件引入
import avangerSdk from '@langge-data/avanger-sdk';

2. 初始化

// app.js 文件入口处初始化
avangerSdk.init({
  appId: 1,  // 应用ID,默认 0
  loginHost: SSO_URL,  // SSO登录域名
  authHost: AUTH_URL,  // 权限平台域名
  refreshTokenName: 'refresh'  // 自定义Token名称, 不配置默认为 refresh,
  authTreeType: 'array', // 权限树返回格式 array | object, 不配置默认为 array
})

appId: 用以区分不同平台, 取值: 0: 不获取权限 999: 获取所有平台权限 1: 获取onemap生管平台权限 2:获取HD管理后台权限

3. 获取权限、用户信息

avangerSdk.getAuthInfo()
  .then(({ code, msg, data }) => {
    if (code === 0) {
      // 获取全部权限
      // 方式1  const auth = avangerSdk.getRole()  
      // 方式2  const auth = data.permission_entities 
      
      // 获取用户信息
      // 方式1  const userInfo = avangerSdk.getUserInfo() 
      // 方式2  const userInfo = data.user_info 
      
      // todo: 业务代码
    } else {
      // todo: 获取权限信息失败提示  msg
    }
  })
  .catch(() => {
      // todo: 获取权限信息失败提示
  })

接口返回数据格式: https://www.yuque.com/docs/share/c162cf85-df2a-48e0-abda-20217f2ba61b?#zjw8z

4. 添加 refresh-token 请求头

// 在请求拦截器中
http.interceptors.request.use(
  (config) => {
    const token = avangerSdk.getToken()
    if (token) {
      config.headers['refresh-token'] = token 
     }
    ...
    return config
  }
)

5. 修改无权访问和登录过期逻辑

接口返回code码: 401,403: token有效,但相应接口无权限访问 406: token失效,登录过期 接口无权限或登录过期时,http 响应状态码 status 会为401/403/406, 同时返回 response.data.code 为相应code码

权限平台文档:https://www.yuque.com/docs/share/c162cf85-df2a-48e0-abda-20217f2ba61b?#zjw8z

http.interceptors.response.use(
  (response) => {
    const { code } = response.data
    if (code === 0) {
        return response
    } else if (code === 401 || code === 403 {
        // todo: 无权访问提示
        
    } else if (code === 406) {
       // todo: 登录过期提示 + 登出跳转
       console.log('登录过期, 请退出重新登录')
       avangerSdk.logout()
    } else {
        // todo: 其他业务提示
    }
    return Promise.reject(res)
  },
  (error) => {
    const { status } = error.response
    if (status === 401 || status === 403 {
        // todo: 无权访问提示
        
    } else if (status === 406) {
       // todo: 登录过期提示 + 登出跳转
       console.log('登录过期, 请退出重新登录')
       avangerSdk.logout()
    } else {
       // todo: 其他业务提示
    }
    return Promise.reject(err)
  }
)

相关API

获取权限

// 获取全部权限
avangerSdk.getRole() 

// 获取路由权限
avangerSdk.getRole('route') 

// 获取页面按钮权限
avangerSdk.getRole('page') 

// 设置页面内按钮权限, code: 页面code
avangerSdk.setPagePermission(code)

// 获取用户信息
avangerSdk.getUserInfo()

获取 Token

// 获取 refresh-token, 参数默认为 config.refreshTokenName 即 ‘refresh’
avangerSdk.getToken()  或  avangerSdk.getToken('refresh') 

// 获取 sso-token (正常情况下,不需要再获取ssoToken)
avangerSdk.getToken('sso') 

登录登出跳转

// 登录
avangerSdk.login() 

// 登出
avangerSdk.logout() 
1.4.7

1 year ago

1.4.2-1

1 year ago

1.4.6

1 year ago

1.4.5

1 year ago

1.4.4

1 year ago

1.4.3

1 year ago

1.4.2

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago