@mobiuspace/node-auth0
TypeScript icon, indicating that this package has built-in type declarations

2.1.2 • Public • Published

安装

yarn add @mobiuspace/node-auth0

createServer(options: IServerOptions): Express

创建一个 node 服务,返回 Express 实例

IServerOptions

  • appName: string - 应用名称
  • staticDir: string - 静态资源目录
  • auth0?: - auth0 权限配置
    • domain: string
    • audience: string
    • issuer: string
  • }
  • apiList: IApiScopeType[] - 接口转发配置

IApiScopeType 定义

interface IApiType {
  path: string
  permissions: string[]
  scope: string
  target: [string, string]
  mockTarget?: string
}
interface IApiScopeType {
  scope: string
  target: [string, string]
  mockTarget?: string
  apis: IApiType[]
}

example

带 auth0 鉴权

const path = require('path')
const { createServer } = require('@mobiuspace/node-auth0')
const config = require('./configs')

const server = createServer({
  appName: config.appName,
  staticDir: path.join(__dirname, 'public'), // 这里是打包之后的目录,后续在做优化
  auth0: {
    domain: config.auth0.domain,
    audience: config.auth0.audience,
    issuer: config.auth0.issuer
  },
  apiList: config.apiList
})
const port = process.env.PORT || 3040
server.listen(port, () => {
  console.log('Express server started on http://localhost:' + port)
})

不带 auth0 鉴权

const path = require('path')
const { createServer } = require('@mobiuspace/node-auth0')
const config = require('./configs')

const server = createServer({
  appName: config.appName,
  staticDir: path.join(__dirname, 'public'),
  apiList: config.apiList
  // 不用传 auth0
})
const port = process.env.PORT || 3000
server.listen(port, () => {
  console.log('Express server started on http://localhost:' + port)
})

中间件

导出中间件结合 Webpack DevServer 在开发阶段实现鉴权, mock, 调用内网接口等能力

  • jwtCheck({ domain, audience, issuer }): RequestHandler

  • ApiProxy(apiList: IApiScopeType[], mockHandler?: IMockHandlerType): RequestHandler

// setupProxy.js
const { jwtCheck, ApiProxy } = require('@mobiuspace/node-auth0')
const config = require('./configs')

module.exports = function (app) {
  console.log(JSON.stringify(process.env))
  app.use(
    '/api',
    jwtCheck(config.auth0),
    ApiProxy(config.apiList, (path) => {
      delete require.cache[require.resolve('./mock')] // 清除掉node require 缓存,用来解决每次修改mock需要重启的问题
      const mockData = require('./mock')
      return mockData[path] || null
    })
  )
}

Readme

Keywords

none

Package Sidebar

Install

npm i @mobiuspace/node-auth0

Weekly Downloads

0

Version

2.1.2

License

MIT

Unpacked Size

13.7 kB

Total Files

17

Last publish

Collaborators

  • luotongzhou
  • isonxg
  • littlepoolshark
  • wwfssd