可能会在错误中间件中显示需要哪些权限?
//User don't have this permission
app.post("/", guard.check(permissions.$("admin")), (req, res) => {
return new Area(req.body)
.save()
.then(area => {
///....
})
.catch(err => next(err))
})错误中间件
我想在这里的console.log()中显示权限
app.use(function (err, req, res, next) {
if (err.code === "invalid_token") {
return res.status(401).send("...")
}
if (err.code === "credentials_required") {
return res.status(401).send("...")
}
//...
})发布于 2020-04-23 10:20:29
您可以将guard.check中间件包装到另一个中间件中,然后将所需的权限放到req对象中,然后将其放入错误处理中间件中。
const customGuard = (permissions) => { // middleware factory
return (req, res, next) => { // return a middleware function
req.requiredPermissions = permissions; // store `permissions` in `req.requiredPermissions`
guard.check(permissions)(req, res, next); // check your permissions with express-jwt-permissions's guard
}
}使用,替换
app.post("/", guard.check(permissions.$("admin"))
...通过
app.post("/", customGuard(permissions.$("admin"))
...然后,在你的错误中间件中
app.use(function (err, req, res, next) {
console.log("Required permissions: ", req.requiredPermissions); // here
if (err.code === "invalid_token") {
return res.status(401).send("...")
}
if (err.code === "credentials_required") {
return res.status(401).send("...")
}
//...
})https://stackoverflow.com/questions/61325635
复制相似问题