如何从Feathers的钩子之前返回未经授权的响应

时间:2018-06-24 22:19:51

标签: node.js express feathersjs

我某些部分人将禁止使用应用程序(模块)的某些部分,因此我想在上钩之前进行检查,并在需要时发送未经授权的回复。 我已经在后端成功抛出了错误,但是在前端,我仍然获得了成功的响应,就像没有错误一样。

这是我的代码的样子:

1。检查发送请求的用户是否禁止应用的功能:

        function isAppForbidden(hook) {
          let forbiddenApps = [];
          hook.app.services.settings.find({
            query: {
              $limit: 1,
              $sort: {
                createdAt: -1
              }
            }
          }).then(res => {
            let array = hook.params.user.hiddenApps;
            if(array.indexOf('qualitydocs') >= 0 || res.data[0].forbiddenApps.indexOf('qualitydocs') >= 0) {
              hook.response = Promise.reject({error: '401 Unauthorized'}); 
                 //this part is important, the rest not so much    
                //what im expecting to do here is just to return unauthorized response                                                  
            }
          });
          return hook;
        }

但是现在这只是在后端抛出错误,如:
“错误:未处理的拒绝,位于:Promise Promise {    {错误:{代码:“ 401”,消息:“未经授权”}}}}代码= 401,消息=未经授权”

前端仍然获得成功的响应(200个请求的数据)

我只是在钩子之前调用此函数:

  before: {
    all: [
      authenticate('jwt'),
      hook => includeBefore(hook),
      hook => isAppForbidden(hook) //here, rest is not important
    ],
    find: [],
    get: [],
    create: [(hook) => {
      hook.data.authorId = hook.params.user.id;
    }],
    update: [],
    patch: [],
    remove: []
  },

我期望得到的响应看起来像这样:enter image description here

1 个答案:

答案 0 :(得分:0)

找到了解决方案...关键是将函数的内容包装在promise中...所以现在看起来像这样:

FragmentStatePagerAdapter

它可作为魅力

enter image description here