Axios Patch On FeathersJs没有身份验证令牌

时间:2018-11-11 16:57:36

标签: feathersjs

我在FeathersJS中遇到补丁问题。

我想用axios.patch更新数据

,但是显示的消息始终是“无身份验证令牌”

{"name":"NotAuthenticated","message":"No auth token","code":401,"className":"not-authenticated","data":{},"errors":{}}

这是我的axios:

Aktifasi() {
  axios.patch(process.env.ROOT_API+'/ek_user?id_user=2',
  qs.stringify({
    headers: {
      'Authorization': 'Bearer ' + localStorage.getItem('token'),
      'Content-Type': 'application/json',
    },
    active_user: 1
  }))
  .then(request => this.AktifasiSuccesSend(request))
  .catch((error) => this.AktifasiFailedSend(error))
},
AktifasiSuccesSend (request) {
  console.log('Yay');
},
AktifasiFailedSend (error) {
  console.log('Oh Fail');
}

这与FeathersJS挂钩:

   before: {
    all: [],
    find: [ authenticate('jwt') ],
    get: [ authenticate('jwt') ],
    create: [ hashPassword() ],
    update: [ hashPassword(),  authenticate('jwt') ],
    patch: [ hashPassword(),  authenticate('jwt') ],    
    remove: [ authenticate('jwt') ]
  },

2 个答案:

答案 0 :(得分:1)

我建议变得非常善于使用适当的Node调试器。 Visual Studio Code具有出色的调试器。我什至在Feathers博客上写了一篇有关它的文章:https://blog.feathersjs.com/debugging-feathers-with-visual-studio-code-406e6adf2882

我会为您提供一些指导,以帮助您入门,但是您将需要使用调试器回答自己的问题。

您收到的“没有身份验证令牌”消息来自authenticate('jwt')挂钩。以下是一些用于解决自己的问题的典型步骤:

  • 如果您在node_modules文件夹中打开该钩子,并在消息之前在其中放置断点,则可以看到它在寻找jwt令牌的位置。
  • 如果您在patch钩子中的所有其他钩子之前创建一个钩子,则可以在其中放置一个断点,并检查钩子上下文对象以查看请求是否包含jwt (在authenticate钩期望的位置。
  • 如果jwt令牌不在authenticate钩希望找到的位置,则可能会丢失authentication.js设置文件中的中间件功能注册。您将检查Feathers文档,以确保您已经正确注册了身份验证插件。

答案 1 :(得分:1)

正如Axios configuration documentation所示,headers是作为一个单独的选项而不是作为字符串化的查询字符串传递的(根本不需要):

const data = {
  active_user: 1
};
const config = {
  headers: {
    'Authorization': 'Bearer ' + localStorage.getItem('token'),
    'Content-Type': 'application/json',
  }
};

axios.patch(process.env.ROOT_API + '/ek_user?id_user=2', data, config);