Loopback 3.4.0:在自定义验证回调中获取当前userId和已分配的角色

时间:2017-03-08 17:05:43

标签: loopbackjs

使用 common / models / model.js 中的代码,我可以为模型添加自定义验证功能:

module.exports = function(model) {
  model.validate('property', validatorCallback, { message: 'Message.' });
  function validatorCallback(err) {
    // How to access userId and assigned user roles here?
  }
};

但是如何在验证功能中访问当前用户的userId和角色?

2 个答案:

答案 0 :(得分:1)

为此目标创建了loopback-context。但是根据我的经验,它是错误的和无用的。

但验证员并不适合您的目标。

Remote hooks是最适合的地方。

答案 1 :(得分:1)

看起来目前这是不可能的。 Github上有一个正在进行的工作问题:WIP: Custom validator promises and options #1229

我现在的解决方案是在保存之前添加 operation hook并在那里验证值。在保存前挂钩中,上下文可用,可用于访问ctx.options.accessToken.userId。如果该值无效,我将其设置为特定的无效值(在我的情况下为-1)。然后我可以简单地添加一个排除-1的验证器:

validatesExclusionOf('validatedProperty', { in: [-1], message: 'Invalid value.' });

在保存操作挂钩之前使用的优点是,无论模型如何访问/更改,它都会运行。通过使用内置的validatesExclusionOf验证器,我得到了标准的ValidationError响应。