Uma Ferramenta Sumor Cloud.
Mais Documentação
Um middleware de token para ExpressJS.
npm i @sumor/token-middleware --save
Requer Node.JS versão 18.x ou superior
Como este pacote é escrito em Módulo ES,
por favor mude o seguinte código no seu arquivo package.json:
{
  "type": "module"
}
import express from 'express'
import tokenMiddleware from '@sumor/token-middleware'
const app = express()
app.use(tokenMiddleware)
// carregar token
app.use(async (req, res, next) => {
  const tokenId = req.token.id
  const tokenInfo = await fetchToken(tokenId)
  req.token.user = tokenInfo.user
  req.token.data = tokenInfo.data
  req.token.permission = tokenInfo.permission
  next()
})
// definir token
app.get('/login', async (req, res) => {
  const username = req.query.username
  const password = req.query.password
  req.token.id = await createToken(username, password)
  // automaticamente adicionará o token ao cabeçalho da resposta no cookie 't'
  res.send('Login com sucesso')
})
// usar token
app.get('/api', (req, res) => {
  // verificar permissão
  req.token.check('AUTH1')
  res.send('Olá Mundo')
})
// obter permissão
req.token.permission = {
  AUTH1: ['LEITURA', 'ESCRITA'],
  AUTH2: ['LEITURA']
}
const hasAuth1 = req.token.has('AUTH1') // true
const hasAuth2 = req.token.has('AUTH2') // true
const hasAuth3 = req.token.has('AUTH3') // false
const hasAuth1Leitura = req.token.has('AUTH1', 'LEITURA') // true
const hasAuth1Escrita = req.token.has('AUTH1', 'ESCRITA') // true
const hasAuth2Leitura = req.token.has('AUTH2', 'LEITURA') // true
const hasAuth2Escrita = req.token.has('AUTH2', 'ESCRITA') // false
// verificar permissão
req.token.check('AUTH1') // pass
req.token.check('AUTH2') // pass
req.token.check('AUTH3') // lançará um Erro PERMISSION_DENIED Permissão negada: AUTH3
req.token.check('AUTH1', 'LEITURA') // pass
req.token.check('AUTH1', 'ESCRITA') // pass
req.token.check('AUTH2', 'LEITURA') // pass
req.token.check('AUTH2', 'ESCRITA') // lançará um Erro PERMISSION_DENIED Permissão negada: AUTH2=ESCRITA