Creating a expressjs middleware that accepts parameters

前端 未结 5 2116
自闭症患者
自闭症患者 2020-12-07 10:28

I am trying to create a middleware that can accept parameters. How can this be done?

example

app.get(\'/hasToBeAdmin\', HasRole(\'Admin\'), function(         


        
5条回答
  •  一个人的身影
    2020-12-07 11:33

    I use this solution. I recieve a jwt token in body req, and get role information from there

    //roleMiddleware.js
    
    const checkRole = role => {
        
        return (req, res, next) => {
            if (req.role == role) {
                console.log(`${role} role granted`)
                next()
            } else {
                res.status(401).send({ result: 'error', message: `No ${role} permission granted` })
            }
        }
    }
    
    module.exports = { checkRole }
    

    So first I use auth middleware to know if is a valid user, and then the role middleware to know if user have access to the api route

    // router.js
    
    router.post('/v1/something-protected', requireAuth, checkRole('commercial'), (req, res) => {
        // do what you want...
    })
    

    I hope to be useful

提交回复
热议问题