仅当调用是从服务器完成或用户是管理员时才允许方法

Allow method only if call is done from server or if user is admin

我正在使用 feathersjs,我需要保护我的服务的补丁方法。我正在使用 feathers-hooks-common 作为挂钩。只有当调用是从服务器发出或由管理员完成时,我才需要允许补丁方法。

const {disallow, isNot, iff, isProvider} = require('feathers-hooks-common'); 
const isAdmin = context => { return context.params.user.isAdmin;}
module.exports = {
    patch: [
        iff(isProvider('external') && isNot(isAdmin), disallow()), 
        iff(isNot(isProvider('server')), disallow())
    ],
}

第二条规则,iff(isNot(isProvider('server')), disallow()),工作正常,但我无法获得允许服务器调用的第一条规则。

挂钩不能与条件结合使用,但由于您已经在使用 iff,您可以将其设为嵌套语句:

const {disallow, isNot, iff, isProvider} = require('feathers-hooks-common'); 
const isAdmin = context => { return context.params.user.isAdmin;}
module.exports = {
    patch: [
        iff(isProvider('external'),
          iff(isNot(isAdmin), disallow())
        )
    ],
}