@sumor/token-middleware

token-middleware

Ein Sumor Cloud Tool.
Weitere Dokumentation Ein Token-Middleware für ExpressJS.

CI Test Coverage Audit

Installation

npm i @sumor/token-middleware --save

Voraussetzungen

Node.JS-Version

Erfordert Node.JS-Version 16.x oder höher

Erforderliches Node.JS-ES-Modul

Da dieses Paket in ES-Modul geschrieben ist, ändern Sie bitte den folgenden Code in Ihrer package.json-Datei:

{
  "type": "module"
}

Verwendung

Fügen Sie die Token-Middleware zur ExpressJS-App hinzu

import express from 'express'
import tokenMiddleware from '@sumor/token-middleware'

const app = express()
app.use(tokenMiddleware)

// Token laden
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()
})

// Token setzen
app.get('/login', async (req, res) => {
  const username = req.query.username
  const password = req.query.password
  req.token.id = await createToken(username, password)
  // Der Token wird automatisch zum Antwort-Header-Cookie 't' hinzugefügt
  res.send('Login erfolgreich')
})

// Token verwenden
app.get('/api', (req, res) => {
  // Berechtigung überprüfen
  req.token.check('AUTH1')

  res.send('Hallo Welt')
})

Berechtigungsprüfung

// Berechtigung abrufen
req.token.permission = {
  AUTH1: ['LESEN', 'SCHREIBEN'],
  AUTH2: ['LESEN']
}
const hasAuth1 = req.token.has('AUTH1') // true
const hasAuth2 = req.token.has('AUTH2') // true
const hasAuth3 = req.token.has('AUTH3') // false

const hasAuth1Read = req.token.has('AUTH1', 'LESEN') // true
const hasAuth1Write = req.token.has('AUTH1', 'SCHREIBEN') // true
const hasAuth2Read = req.token.has('AUTH2', 'LESEN') // true
const hasAuth2Write = req.token.has('AUTH2', 'SCHREIBEN') // false

// Berechtigung überprüfen
req.token.check('AUTH1') // Erfolgreich
req.token.check('AUTH2') // Erfolgreich
req.token.check('AUTH3') // Fehler PERMISSION_DENIED Berechtigung verweigert: AUTH3
req.token.check('AUTH1', 'LESEN') // Erfolgreich
req.token.check('AUTH1', 'SCHREIBEN') // Erfolgreich
req.token.check('AUTH2', 'LESEN') // Erfolgreich
req.token.check('AUTH2', 'SCHREIBEN') // Fehler PERMISSION_DENIED Berechtigung verweigert: AUTH2=SCHREIBEN