【问题标题】:why JWT token is not storing in cookie为什么 JWT 令牌没有存储在 cookie 中
【发布时间】:2022-08-10 02:50:45
【问题描述】:

我正在尝试使用 JWT 令牌对用户进行身份验证。 这是我从 API 发送的令牌

  const token = user.getJWToken();
    const options = {
        expires:new Date(
            // convert days into ms
            Date.now + process.env.COOKIE_EXPIRE * 24*60*60*1000
        ),
        httpOnly:true
    }

    res.status(statusCode).cookie(\"token\",token,options).json({
        success:true,
        user,
        token
    });

这是我用于后端的 app.js

app.use(express.json());
app.use(cookieParser());
app.use(cors())

现在当我登录 React Js 时。不存储任何 cookie。在邮递员中,一切正常。它在邮递员中显示饼干。但是当我在 frontEnd 中使用它时。不存储任何 cookie

    api.post(\"/api/v2/users/login\", {
        email: loginEmail,
        password: loginPassword
      },{headers:{\'Content-Type\':\"application/json\"}})
      .then((res) => {
        console.log(res.data);
        setloggedIn(true);
      })
      .catch((err) => {
        console.log(err.message);
      });
  };

和 api 是

const api = axios.create({
 baseURL: process.env.REACT_APP_API_BASE_URL ,
});

    标签: node.js reactjs jwt


    【解决方案1】:

    我认为

    1. 您的代码res.status(statusCode).cookie("token",token,options).json({...}) 可能导致响应格式错误的 JSON,这取决于“用户”和“令牌”的结构?在您的场景中,它们都假设是 key:val 对。
    2. 在前端,你仍然尝试添加'withCredentials: 真' 作为您的 axio 请求选项的一部分。如果你不熟悉这个选项,你可以在这里看到一些相关的帖子:https://stackoverflow.com/a/16209531

    【讨论】:

      【解决方案2】:

      我有同样的问题,我使用自定义 publicRequest 方法登录我通过添加 {withCredentials: true} 作为请求选项来解决它。

      【讨论】:

        猜你喜欢
        • 2015-09-15
        • 2016-09-13
        • 2022-01-15
        • 2021-11-03
        • 2017-12-13
        • 2021-10-16
        • 2021-01-21
        • 1970-01-01
        • 2019-02-01
        相关资源
        最近更新 更多