0

我已经使用路由 api/login 创建了 api,我在服务器文件夹中有客户端,所以它可以是没有 http 的 url(我有代理)。问题是当我提交请求时。我在浏览器中有 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 的秘密令牌添加?

我真的很感激任何建议。先感谢您。

4

1 回答 1

0

在正常的应用程序中,当您成功登录然后给您访问令牌... 500 错误意味着您可能有问题要备份(在我看来)。

我向您展示我的示例登录助手功能

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

而且我还有一个具有身份验证标头的功能。
每个支持检查的请求是否过期 我的令牌让我们看看

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

    return user;
}

在前面我有错误处理函数,它检查是否返回 401 错误重定向到登录页面

于 2018-12-14T12:45:56.610 回答