1

现在,当用户登录或注册时,我已将我的 jwt 存储在 cookie 中,但数据不会保留,因此我创建了一个函数来处理此问题,但我需要令牌的值才能使其工作

这是我需要令牌值的功能

const setAuthToken = (token) => {
  if (token) {
    axios.defaults.headers.common['x-auth-token'] = token;
  } else {
    delete axios.defaults.headers.common['x-auth-token'];
  }
};

这是我在反应中用来将令牌值发送到此函数的操作我尝试为此使用 js-cookies 但它给了我未定义

import Cookies from 'js-cookie';
//load user
export const loadUser = () => async (dispatch) => {
  const token = Cookies.get('access_token');
  console.log(token);
  // if (cookie.access_token) {
  //   setAuthToken(cookie.access_token);
  // }

  try {
    const res = await axios.get('/user/me');
    dispatch({
      type: USER_LOADED,
      payload: res.data,
    });
  } catch (err) {
    dispatch({
      type: AUTH_ERROR,
    });
  }
};

这是我在浏览器中收到的 cookie 在此处输入图像描述

4

2 回答 2

1

如果您仔细查看您的屏幕截图,您可以看到 cookie 是由服务器作为HttpOnly发送的。这是一种安全措施,因此设计上任何 JavaScript 代码都无法访问 cookie。

请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#Restrict_access_to_cookies

如果您控制服务器,则可以相应地更改它,否则您将不得不进行交易:-)

于 2020-05-22T23:07:13.690 回答
0
 res.cookie('x-auth-token',token,{
      maxAge: 3600,
      httpOnly: true,
      secure:true
    })
于 2020-05-22T23:15:50.220 回答