在表达我的ACL中比较路线和路线参数

时间:2018-12-04 23:47:47

标签: express acl express-router

我已经基于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

0 个答案:

没有答案