express jwt-显示调试权限

express jwt-显示调试权限,express,express-jwt,Express,Express Jwt,可能会错误地显示需要哪些权限 //用户没有此权限 app.post(“/”,guard.check(permissions.$(“admin”),(req,res)=>{ 返回新区域(请求正文) .save() .然后(面积=>{ ///.... }) .catch(err=>next(err)) }) 错误中间件 我想在console.log()中显示权限 app.use(函数(err、req、res、next){ if(err.code==“无效的\u令牌”){ 返回资源状态(401).s

可能会错误地显示需要哪些权限

//用户没有此权限
app.post(“/”,guard.check(permissions.$(“admin”),(req,res)=>{
返回新区域(请求正文)
.save()
.然后(面积=>{
///....
})
.catch(err=>next(err))
})
错误中间件 我想在console.log()中显示权限

app.use(函数(err、req、res、next){
if(err.code==“无效的\u令牌”){
返回资源状态(401).send(“…”)
}
如果(err.code==“需要凭证”){
返回资源状态(401).send(“…”)
}
//...
})

您可以包装
guard。将
中间件检查到另一个中间件中,您可以将所需的权限放入
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.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("...")
  }

  //...
})

提供
防护装置。检查
功能。我猜权限存在于一些东西中,比如
req.user.permission
它是
express jwt permissions
库中的一个内置函数。在错误处理程序中,只需打印
console.log(req.user)
。即可打印用户发送的所有权限。我想知道特定路径需要什么权限并打印它们。呼!,这是个好主意。请贴出答案。
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("...")
  }

  //...
})