LoginPlugin

LoginPlugin

请求管理-登录插件
在请求前后植入登录态检查和处理逻辑,详见[基础能力] 健壮高效的登录机制

Constructor

new LoginPlugin(pluginNameopt, loginCenter, apiAuthFailChecker)

Source:

构造函数

Parameters:
Name Type Attributes Default Description
pluginName string <optional>
'LoginPlugin'

插件名称

loginCenter BaseLogin

登录中心

apiAuthFailChecker LoginPlugin~ApiAuthFailChecker

登录态失效校验函数

Extends

Members

pluginName :string

Source:
Overrides:

插件名称,主要用于打印日志和调试,便于追溯操作源

Type:
  • string

requester :Requester

Source:
Overrides:

请求管理器

Type:

Methods

afterRequest(reqOptions, thisIssuer, reqRes) → {undefined|Requester~AfterRequestRes}

Source:
Overrides:

钩子函数,请求返回之后调用,同步
不会等待异步操作返回,如需等待异步逻辑,请改用BasePlugin#afterRequestAsync

Parameters:
Name Type Description
reqOptions Requester~ReqOptions

请求参数

thisIssuer object

发起接口请求的this对象

reqRes Requester~ReqRes

请求结果

Returns:

期望的后续处理,undefined表示继续执行默认流程

Type
undefined | Requester~AfterRequestRes

(async) afterRequestAsync(reqOptions, thisIssuer, reqRes) → {undefined|Requester~AfterRequestRes}

Source:
Overrides:

钩子函数,请求返回之后调用,异步
会等待async函数resolve,若无异步逻辑,建议使用BasePlugin#afterRequest

Parameters:
Name Type Description
reqOptions Requester~ReqOptions

请求参数

thisIssuer object

发起接口请求的this对象

reqRes Requester~ReqRes

请求结果

Returns:

期望的后续处理,undefined表示继续执行默认流程

Type
undefined | Requester~AfterRequestRes

beforeRequest(reqOptions, thisIssuer) → {undefined|Requester~BeforeRequestRes}

Source:
Overrides:

钩子函数,发请求之前调用,同步
不会等待异步操作返回,如需等待异步逻辑,请改用BasePlugin#beforeRequestAsync

Parameters:
Name Type Description
reqOptions Requester~ReqOptions

请求参数

thisIssuer object

发起接口请求的this对象

Returns:

期望的后续处理,undefined表示继续执行默认流程

Type
undefined | Requester~BeforeRequestRes

(async) beforeRequestAsync(reqOptions, thisIssuer) → {undefined|Requester~BeforeRequestRes}

Source:
Overrides:

钩子函数,发请求之前调用,异步
会等待async函数resolve,若无异步逻辑,建议使用BasePlugin#beforeRequest

Parameters:
Name Type Description
reqOptions Requester~ReqOptions

请求参数

thisIssuer object

发起接口请求的this对象

Returns:

期望的后续处理,undefined表示继续执行默认流程

Type
undefined | Requester~BeforeRequestRes

mount(requester)

Source:
Overrides:

钩子函数,插件被挂载到requester对象上时触发

Parameters:
Name Type Description
requester Requester

被挂载到的requester对象

(async) requestWithLogin(reqOptions, manageOptionsopt) → {*|Requester~ReqRes}

Source:

需要登录态的http请求,会在请求前后自动加入登录态相关逻辑:

  1. 请求发出前,若未登录,则先触发登录,然后再发送接口请求
  2. 请求返回后,若判断后端登录态已失效,则自动重新登录重新发送接口请求,并以重新请求的结果作为本次调用结果返回

本函数会注册到requester对象上,可以直接通过requester.requestWithLogin()调用

Example
let fetchData = requester.requestWithLogin({
  url: '', //正常设置url、data、method等各种请求选项
  loginOpts: { //额外定义一个保留字段loginOpts,用于指定登录参数
    mode: 'silent'
  }
});
Parameters:
Name Type Attributes Description
reqOptions Requester~ReqOptions

请求参数

Properties
Name Type Attributes Description
loginOpts object <optional>

额外附增字段:登录参数,格式同BaseLogin#login

manageOptions Requester~ManageOptions <optional>

管理参数

Returns:

请求结果,格式同Requester#request

Type
* | Requester~ReqRes

Type Definitions

ApiAuthFailChecker(resData, reqOptions) → {boolean}

Source:

登录态失效校验函数,根据接口返回内容判断后端登录态是否失效

Example
function apiAuthFailChecker(resData, reqOptions){
  return (
    resData.respMsg.includes('请登录') || //后端登录态失效通用判断条件
    (reqOptions.url.includes('/bizA/') && resData.respCode===-1) || //业务线A后端接口登录态失效
    (reqOptions.url.includes('/bizB/') && resData.respCode===-2) //业务线B后端接口登录态失效
  );
}
Parameters:
Name Type Description
resData *

后端接口返回内容

reqOptions Requester~ReqOptions

请求参数

Returns:

后端登录态是否失效

Type
boolean