0

我在前钩子(get)中有2个函数(authenticate,restrictAccess),我想将它们链接在一起。但是restrictAccess被执行了两次(到第二轮它已经丢失了上下文)当我删除authenticate时,restrictAccess按预期工作。

这是我的钩子

module.exports = {
  before: {
    all: [],
    get: [authenticate('jwt'), restrictAccess()],
....

但是当我删除身份验证时

module.exports = {
  before: {
    all: [],
    get: [ restrictAccess()],
....

限制访问按预期工作

4

1 回答 1

1

我能想到的唯一原因是您可能使用了用户服务上的挂钩。

如果是这种情况,authenticate-hook 可能会在内部调用用户服务以将 params.user 设置为请求用户,这将导致对 restrictAccess-hook 的两次调用。

一个可能的解决方法是忽略您的 restrictAccess-hook 中的所有内部调用:

module.exports = context => {
  if (context.params && context.params.provider) {
    // put restriction logik here....
  }

  return context;
}

于 2020-05-06T19:09:03.110 回答