Я создал простой ACL для использования в моем express
маршрутизаторе на основе jwt
.У меня есть таблица разрешений, и я могу сравнить ее с текущими URL и методом.Но я понятия не имею, как я могу использовать параметры маршрутизации.
Разрешения:
{
"RoleId" : 1,
"path": "/api/r/:rp",
"methods": ["GET"]
}
проверить доступ:
async function isAllowed(m,p,a) {
/* count in permissions table m,p,a ( p = route, a = http method )
return count>=1 ? true : false
}
сравнить в промежуточном программном обеспечении:
if (await isAllowed(decoded.mobilePhone, req.originalUrl, req.method)) {
console.log('allowed')
return next()
}
У меня есть доступ к исходному URL в req.originalUrl
, но нет доступа к маршруту запроса (/ api / r /: rp) для его сравнения.
В экспресс-документе говорится, что есть req.route
но это не определено, когда я использую router
как это:
const express = require('express')
const router = express.Router()
router
.get('/api/r/:rp',async(req,res) => {
/* ... */
})
module.exports = router