ReactJS NodeJS:从服务器获取令牌

时间:2019-02-25 17:25:22

标签: node.js reactjs

我刚刚开始使用react,并且我正在expressJS中构建用于react的api,并使用react-router-dom进行路由,而在使用react之前,我陷入了像/ api /:token这样的路由,例如密码恢复我可以只渲染令牌变量,并使用这样的渲染变量执行发布请求

在服务器中

router.get('/reset/:token', (req,res)=>{

    res.render('reset', {token: req.params.token})

})

并在客户端

  <form action="/reset/{{{token}}}" method="POST" id="id">

但是在首先做出反应的情况下,我应该从api / someroute获取数据(事实上,我正在使用axios),但是当我不知道“ someroute”时该怎么办,我该如何执行密码重置操作请求当我不渲染someroute变量(密码恢复令牌和someroute相同)时检查someroute是否确实存在

1 个答案:

答案 0 :(得分:1)

前端中的/:token路由匹配正斜杠之后的任意字符串。因此,当用户要求重设密码时,请在您的node.js应用中构造一个重设令牌,然后将其发送给插入到url中的用户电子邮件地址(代替/:token)。用户单击该链接,然后使用前端中的此类功能从uri抓取它(粗鲁但可以使用):

onSubmit = formValues => {
    const { search } = this.props.location;
    const rawParams = search.slice(1, search.length).split("&");
    const parsedParams = rawParams.map(element => element.split("="));
    const headers = {
      "access-token": parsedParams[0][1],
      "token-type": "Bearer",
      client: parsedParams[1][1],
      expiry: parsedParams[4][1],
      uid: parsedParams[7][1].replace("%40", "@")
    };

    this.props.editPassword(formValues, headers);
  };

formvalues包含用户键入的新密码,我们从他通过电子邮件获取的uri中获取令牌。