Un Sumor Cloud outil.
Plus de documentation
Un middleware de jeton pour ExpressJS.
npm i @sumor/token-middleware --save
Nécessite la version Node.JS 18.x ou supérieure
Comme ce package est écrit en module ES,
veuillez modifier le code suivant dans votre fichier package.json
:
{
"type": "module"
}
import express from 'express'
import tokenMiddleware from '@sumor/token-middleware'
const app = express()
app.use(tokenMiddleware)
// charger le jeton
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()
})
// définir le jeton
app.get('/login', async (req, res) => {
const username = req.query.username
const password = req.query.password
req.token.id = await createToken(username, password)
// il ajoutera automatiquement le jeton à l'en-tête de réponse du cookie 't'
res.send('Connexion réussie')
})
// utiliser le jeton
app.get('/api', (req, res) => {
// vérifier les permissions
req.token.check('AUTH1')
res.send('Bonjour le monde')
})
// obtenir les permissions
req.token.permission = {
AUTH1: ['LECTURE', 'ÉCRITURE'],
AUTH2: ['LECTURE']
}
const hasAuth1 = req.token.has('AUTH1') // vrai
const hasAuth2 = req.token.has('AUTH2') // vrai
const hasAuth3 = req.token.has('AUTH3') // faux
const hasAuth1Lecture = req.token.has('AUTH1', 'LECTURE') // vrai
const hasAuth1Ecriture = req.token.has('AUTH1', 'ÉCRITURE') // vrai
const hasAuth2Lecture = req.token.has('AUTH2', 'LECTURE') // vrai
const hasAuth2Ecriture = req.token.has('AUTH2', 'ÉCRITURE') // faux
// vérifier les permissions
req.token.check('AUTH1') // réussi
req.token.check('AUTH2') // réussi
req.token.check('AUTH3') // lance une erreur PERMISSION_DENIED Permission denied: AUTH3
req.token.check('AUTH1', 'LECTURE') // réussi
req.token.check('AUTH1', 'ÉCRITURE') // réussi
req.token.check('AUTH2', 'LECTURE') // réussi
req.token.check('AUTH2', 'ÉCRITURE') // lance une erreur PERMISSION_DENIED Permission denied: AUTH2=ÉCRITURE