Проблема с axios + React и Redux fornodejs / express + passport + jwt api - PullRequest
0 голосов
/ 14 декабря 2018

Я создал API с маршрутизацией api / login, у меня есть клиент в папке сервера, поэтому это может быть URL без http (у меня есть прокси для этого).Проблема в том, когда я отправляю запрос.У меня 500 ошибок в браузере (от catch (error)).Вот мой создатель действий:

export const loginUser = (email,password) => {
  return function(dispatch) {
    // const token = 'my secret token', I dont know where to put it
   axios.post(
       'api/login', {email: email, password: password}
   ).then((response) => dispatch({type: LOGIN_USER, payload:response}))
  .catch((error) => {
  console.log("axios error:",error);
  });
 }
}

В функции отправки в React у меня есть адрес электронной почты и пароль, поэтому я передаю его в действие.Я не уверен, что я должен добавить в axios, я полагаю, мне нужно добавить секретный токен от jwt?

Я действительно ценю любые советы.Заранее спасибо.

1 Ответ

0 голосов
/ 14 декабря 2018

в обычном приложении, когда вы успешно вошли в систему, затем выдает токен доступа ... Ошибка 500 означает, что, вероятно, у вас есть проблема с backand (на мой взгляд).

я покажу вам мои примеры помощник по входу в системуfunction

function signin(email, password) {
    const user = axios({
        method: 'post',
        url: 'url',
        data: {
            email,
            password,
        },
        responseType: 'json',
    });
    return user;
}

это создатель действия

export const login = (email, password) => async (dispatch, getState, api) => {
    dispatch(request());
    try {
        const res = await api.signin(email, password);
        localStorage.setItem('token', res.data.token);
        return dispatch(success(res.data.user));
    } catch (error) {
        dispatch(failure(error.response.data.message));
    }
};

, а также у меня есть еще одна функция с заголовком auth.
истек каждый запрос на проверку, или мой токен не отображается

function getProfile(token) {
    const user = axios({
        method: 'get',
        url: 'url',
        headers: {
            Authorization: `Bearer ${token}`,
        },
        responseType: 'json',
    });

    return user;
}

и впереди у меня есть функция обработчика ошибок, которая проверяет, возвращает ли ошибку 401, перенаправляя на страницу входа

...