我已经基于express
创建了一个简单的ACL以在我的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()
}
我可以访问req.originalUrl
中的原始网址,但无法访问进行比较的请求路由(/ api / r /:rp)。
Express文档说有req.route
,但是当我像这样使用router
时,它是未定义的:
const express = require('express')
const router = express.Router()
router
.get('/api/r/:rp',async(req,res) => {
/* ... */
})
module.exports = router