跳到主要内容

请求与认证

适用对象:需要在微前端里发请求、获取当前用户和 token,或接入本地 / LDAP / 外部认证登录流程的开发者。

使用场景

  • 你想发普通 HTTP 请求
  • 你想做登录、登出、读取用户态
  • 你在实现自定义登录页,或接外部认证提供方

request

基于 Axios 实现的网络请求方法,用于向服务器发起 HTTP 请求并处理响应数据。用法同 Axios 一致。

示例

import { request } from 'ouroboros-sdk'

const res = await request({
url: 请求地址,
method: 请求方法,
})

login(loginParams)

登录方法。

参数说明

参数名类型必填说明
loginParamsloginParams登录参数

loginParams

参数名类型说明
usernamestring用户名
passwordstring密码
successstring | function登录成功后的自定义处理逻辑;当类型为 string 时,可指定登录成功后的跳转地址;当类型为 function 时,可配合本页的 openMenu(...) 方法跳转到指定页面
errorfunction登录失败后的自定义处理逻辑

返回值

返回一个 Promise 对象,登录结果。返回格式如下:

{
success: true/false,
data: {
...其他字段
},
msg: ""
}
  • success: 返回布尔值,表示登录成功还是失败;
  • data: 登录成功的返回信息;
  • msg: 登录不成功的错误信息;

示例

import { login } from 'ouroboros-sdk'
const result = await login({
username: '用户名',
password: '密码',
success: (data) => {
// data 参数包含 userInfo 和 token
const { userInfo, token } = data
// 自定义逻辑
},
})

logout

退出登录。

示例

import { logout } from 'ouroboros-sdk'

await logout()

getUserInfo

获取当前用户信息。

返回值

返回一个 Promise 对象,解析后为当前登录用户信息。

示例

import { getUserInfo } from 'ouroboros-sdk'

const userInfo = await getUserInfo()
console.log(userInfo)

getToken

获取平台当前最新 token。

返回值

返回一个 Promise 对象,解析后为最新 token;当平台正在刷新 token 时,会等待刷新完成后再返回。

注意

对于自定义登录页微前端,props.token 仍然会继续传递以兼容历史实现,但它是挂载时快照。如果需要拿到刷新后的 token,请使用 getToken()

示例

import { getToken } from 'ouroboros-sdk'

const token = await getToken()
console.log(token?.accessToken)

listExternalProviders

获取当前应用配置的外部登录提供方列表。

返回值

返回一个 Promise 对象,解析后为提供方数组。

示例

import { listExternalProviders } from 'ouroboros-sdk'

const providers = await listExternalProviders()
console.log(providers)

isLocalPasswordLoginEnabled

判断当前应用是否启用了本地账号密码登录。

返回值

启用时返回 true,否则返回 false

示例

import { isLocalPasswordLoginEnabled } from 'ouroboros-sdk'

const localEnabled = isLocalPasswordLoginEnabled()

startRedirectLogin(provider,returnUrl)

发起跳转式外部登录,适用于 CASOAuth2(含 OIDC)等登录方式。

参数说明

参数名类型必填说明
providerobject外部登录提供方对象
returnUrlstring登录成功后的回跳地址

返回值

返回实际发起跳转的地址;如果提供方无法生成跳转地址,则返回 null

示例

import {
listExternalProviders,
resolveReturnUrl,
startRedirectLogin,
} from 'ouroboros-sdk'

const providers = await listExternalProviders()
const oidcProvider = providers.find((item) => item.type === 'oauth2')

if (oidcProvider) {
startRedirectLogin(oidcProvider, resolveReturnUrl('/'))
}

loginWithLdap(params)

使用 LDAP 目录账号密码登录。

参数说明

参数名类型必填说明
paramsobjectLDAP 登录参数对象,通常包含 providerusernamepassword

返回值

返回一个 Promise 对象,解析后为 LDAP 登录结果。

示例

import { loginWithLdap } from 'ouroboros-sdk'

await loginWithLdap({
provider: 'ldap-default',
username: 'directory-user',
password: 'directory-password',
})

exchangeLoginCode(loginCode)

将登录回调中的 loginCode 换成平台登录结果。

参数说明

参数名类型必填说明
loginCodestring平台回调登录码

返回值

返回一个 Promise 对象,解析后为换取结果。

bindExternalAccount(params)

绑定外部认证账号。

参数说明

参数名类型必填说明
paramsobject绑定所需参数对象

返回值

返回一个 Promise 对象,解析后为绑定结果。

resolveReturnUrl(input)

标准化并清洗登录回跳地址。

参数说明

参数名类型必填说明
inputany原始回跳地址

返回值

返回清洗后的相对地址字符串。

mapAuthError(code)

将认证错误码映射为前端统一错误标识。

参数说明

参数名类型必填说明
codestring | number认证错误码

返回值

返回前端可展示或进一步翻译的错误标识字符串。