@sumor/token-middleware

وسيط الرمز

أداة Sumor Cloud.
مزيد من التوثيق وسيط رمز لـ ExpressJS.

CI Test Coverage Audit

التثبيت

npm i @sumor/token-middleware --save

الشروط المسبقة

إصدار Node.JS

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

يتطلب مكون Node.JS ES

نظرًا لكتابة هذه الحزمة بتنسيق ES module، الرجاء تغيير الشيفرة التالية في ملف 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 تم رفض الإذن: AUTH3
req.token.check('AUTH1', 'READ') // نجاح
req.token.check('AUTH1', 'WRITE') // نجاح
req.token.check('AUTH2', 'READ') // نجاح
req.token.check('AUTH2', 'WRITE') // يطلق خطأ PERMISSION_DENIED تم رفض الإذن: AUTH2=WRITE