@sumor/token-middleware

token-middleware

أداة Sumor Cloud.
المزيد من التوثيق

طبقة وسيط الرمز لـ ExpressJS.

CI Test Coverage Audit

التثبيت

npm i @sumor/token-middleware --save

المتطلبات الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS 18.x أو أعلى

يتطلب استخدام نموذج ES لـ Node.JS

نظرًا لأن هذه الحزمة مكتوبة باستخدام نموذج ES، يرجى تغيير الرمز التالي في ملف package.json الخاص بك:

{
  "type": "module"
}

الاستخدام

إضافة وسيط الرمز لتطبيق ExpressJS

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

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

// تحميل الرمز
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()
})

// تعيين الرمز
app.get('/login', async (req, res) => {
  const username = req.query.username
  const password = req.query.password
  req.token.id = await createToken(username, password)
  // سيتم إضافة الرمز تلقائيًا إلى رأس الاستجابة كعلامة تعريف ملف تعريف الارتباط 't'
  res.send('تسجيل الدخول ناجح')
})

// استخدام الرمز
app.get('/api', (req, res) => {
  // التحقق من الصلاحية
  req.token.check('AUTH1')

  res.send('مرحبًا بالعالم')
})

فحص الصلاحية

// الحصول على الصلاحية
req.token.permission = {
  AUTH1: ['READ', 'WRITE'],
  AUTH2: ['READ']
}
const hasAuth1 = req.token.has('AUTH1') // صحيح
const hasAuth2 = req.token.has('AUTH2') // صحيح
const hasAuth3 = req.token.has('AUTH3') // خطأ

const hasAuth1Read = req.token.has('AUTH1', 'READ') // صحيح
const hasAuth1Write = req.token.has('AUTH1', 'WRITE') // صحيح
const hasAuth2Read = req.token.has('AUTH2', 'READ') // صحيح
const hasAuth2Write = req.token.has('AUTH2', 'WRITE') // خطأ

// التحقق من الصلاحية
req.token.check('AUTH1') // ناجح
req.token.check('AUTH2') // ناجح
req.token.check('AUTH3') // يقوم بإلقاء خطأ PERMISSION_DENIED Permission denied: AUTH3
req.token.check('AUTH1', 'READ') // ناجح
req.token.check('AUTH1', 'WRITE') // ناجح
req.token.check('AUTH2', 'READ') // ناجح
req.token.check('AUTH2', 'WRITE') // يقوم بإلقاء خطأ PERMISSION_DENIED Permission denied: AUTH2=WRITE