我在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') ]
},
答案 0 :(得分:1)
我建议变得非常善于使用适当的Node调试器。 Visual Studio Code具有出色的调试器。我什至在Feathers博客上写了一篇有关它的文章:https://blog.feathersjs.com/debugging-feathers-with-visual-studio-code-406e6adf2882
我会为您提供一些指导,以帮助您入门,但是您将需要使用调试器回答自己的问题。
您收到的“没有身份验证令牌”消息来自authenticate('jwt')
挂钩。以下是一些用于解决自己的问题的典型步骤:
patch
钩子中的所有其他钩子之前创建一个钩子,则可以在其中放置一个断点,并检查钩子上下文对象以查看请求是否包含jwt (在authenticate
钩期望的位置。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);