NodeJS 我如何从本地存储中的jwt获取user_id并在react中使用它?

yqyhoc1h  于 2023-01-30  发布在  Node.js
关注(0)|答案(2)|浏览(193)

我正在编写一个逻辑来创建帖子,并希望将已登录用户添加为发帖用户,我已将refresh标记保存在浏览器本地存储中,当我复制刷新标记并粘贴到www.example.com时jwt.io,收到以下响应

{
  "token_type": "refresh",
  "exp": 1679234275085,
  "iat": 1674953425085,
  "jti": "d723e65f9bdctret41399e5d09278ef1fcbc",
  "user_id": 1,
  "username": "destiny",
  "email": "desphixs111@mailnator.123"
}

现在,我如何获取user_id并在react中使用它,这是我想要使用它的地方

const formData = new FormData()

formData.append("user", 1)

我不想把user_id硬编码为1或2,而是想动态地传递它,我该怎么做呢?

bfhwhh0e

bfhwhh0e1#

您可以使用jwt-decode库。
1.通过在项目的根目录中运行npm install jwt-decode来安装jwt-decode库。
1.将库导入到要使用它的组件或文件中:

import jwtDecode from 'jwt-decode';

1.从本地存储检索JWT标记:

const token = localStorage.getItem('refresh_token');

1.解码令牌并提取user_id

const decoded = jwtDecode(token);
const user_id = decoded.user_id;

1.将user_id附加到表单数据:

formData.append("user", user_id)

1.将表单数据发送到服务器以创建帖子。
注:

  • 在使用令牌之前,应始终验证令牌并检查到期日期。
  • 在使用令牌之前,检查令牌是否存在于本地存储中,并处理找不到令牌的情况,这一点也很重要。
h43kikqp

h43kikqp2#

我建议您不要在formData中发送user_id,它应该由服务器处理以避免安全问题。

相关问题