Патч Axios на FeathersJs Нет авторизационного токена - PullRequest
0 голосов
/ 11 ноября 2018

У меня проблема с патчем в FeathersJS.

Я хочу обновить данные с помощью axios.patch

но сообщение, которое появляется, всегда без токена

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

Это мои аксиозы:

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');
}

И этот крючок на перьяхJS:

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

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Как показывает документация по конфигурации Axios , 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);
0 голосов
/ 12 ноября 2018

Я рекомендую стать очень хорошим в использовании правильного 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. Вы должны проверить документы по перьям, чтобы убедиться, что вы правильно зарегистрировали плагины аутентификации.
...