EggJS中间件

由于EggBornJS后端基于EggJS,因此可以直接使用EggJS生态的中间件,请参考:Egg中间件

EggBornJS系统中间件

1. egg-born-backend

EggBornJS系统中间件的实现源码均位于npm包:egg-born-backend

名称 是否全局中间件 说明
instance 基于子域名创建当前实例信息,并保存为ctx.instance
  • instance

通过instance中间件可以支持多实例/多域名/多租户特性。参见:多实例/多域名/多租户

EggBornJS模块中间件

1. a-base

名称 是否全局中间件 说明
inner 将API接口限定为内部访问
test 将API接口限定为只能在测试环境中访问
transaction 指定API接口开启数据库事务
cors 实现后端跨域
auth 自动解析当前用户信息,并将用户信息写入ctx.state.user
right
  • inner

后端API路由可通过ctx.performAction调用其他后端API路由,这称之为内部访问

后端API路由指定中间件inner就可以限定此路由只能被内部访问。如果前端访问此API接口,就会自动抛出403错误

  1. 1{ method: 'post', path: 'version/update', controller: 'version', middlewares: 'inner' }

中间件inner也可看作是API授权策略体系之一

  • test

后端API路由指定中间件test,可以限定此路由只能在测试环境中访问。在开发测试用例时,可以通过此中间件提供一些API接口,仅供测试环境使用

  1. 1{ method: 'post', path: 'version/test', controller: 'version', middlewares: 'test' }

中间件test也可看作是API授权策略体系之一

  • transaction

后端API路由指定中间件transaction,可以指定此API路由开启数据库事务。参见:Transaction数据库事务

  1. 1{ method: 'post', path: 'test/echo', controller: 'test', middlewares: 'transaction'}
  • cors

由于cors是全局中间件,因此,后端跨域的支持已经准备就绪,我们只需提供相应的配置信息即可。参见:跨域配置 (CORS)

  • auth

auth作为全局中间件,自动解析当前用户信息,并将用户信息写入ctx.state.user,从而方便我们在业务代码中直接访问当前用户信息。参见:用户操作

  • right

(未完待续)