我如何从React中存储在本地存储中的令牌访问数据

时间:2020-08-01 12:53:47

标签: javascript reactjs redux react-redux

我正在使用MERN堆栈和Redux。当用户登录时,我有一个jwtToken保存到本地存储中。我有一个提交信息的表单,该表单上的属性之一是作者,我想自动使用登录用户的ID来填充。您需要记录此表格,以便信息始终存在。有人知道我该怎么做吗?这就是我现在所拥有的,但是它不起作用。除了可以保存在本地存储中之外,还可以通过全局状态访问它,但是我又真的不知道如何访问它,或者哪个更好使用。

class AddSubject extends Component {
  constructor() {
    super();
    const user = localStorage.getItem("jwtToken");
    this.state = {
      title: "",
      summary: "",
      description: "",
      author: user._id,
      errors: {},
    };
  }

4 个答案:

答案 0 :(得分:2)

您需要解码令牌并获取user_id。试试这个:

const jwt_decode = require('jwt-decode');
class AddSubject extends Component {
  constructor() {
    super();
    const token = localStorage.getItem("jwtToken");
    const data = jwt_decode(token);
    this.state = {
      title: "",
      summary: "",
      description: "",
      author: data.user._id,
      errors: {},
    };
  }

答案 1 :(得分:0)

我不确定,但是它可以帮助您:

class AddSubject extends Component {
  constructor() {
    super();
    this.state = {
      title: "",
      summary: "",
      description: "",
      author: localStorage.getItem("jwtToken")._id || '',
      errors: {},
    };
  }

答案 2 :(得分:0)

由于您正在使用redux进行数据管理,因此最好在应用程序初始化期间将已解码的令牌详细信息从localStorage存储到redux存储。这样,用户信息就可以在全球范围内使用,并且每次安装组件时都不需要访问本地存储,其他需要显示用户信息的组件也可以从全局存储中共享它。

答案 3 :(得分:0)

在componentDidMount生命周期中:

window.localStorage.getItem(token)