Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs+reactjs+jwt检查_Javascript_Node.js_Reactjs_Jwt - Fatal编程技术网

Javascript Nodejs+reactjs+jwt检查

Javascript Nodejs+reactjs+jwt检查,javascript,node.js,reactjs,jwt,Javascript,Node.js,Reactjs,Jwt,首先,对不起我的英语。。。 我正在尝试学习如何在Reactjs中构建JWT登录和专用路由器。。。我在nodeJS中创建简单的后端系统,注册用户,列出,创建JWT令牌,并检查JWT是否正常工作,我认为。。。 问题在于react,当文件中API verifyToken中的请求得到验证时,其返回true或false,理论上是其工作的第一个映像。。。所以,当我导出这个文件并在Routes.js中导入时,它不会返回true或false,如图2所示,它会返回一个承诺 我怎么解决这个问题 再一次为我的英语感到

首先,对不起我的英语。。。 我正在尝试学习如何在Reactjs中构建JWT登录和专用路由器。。。我在nodeJS中创建简单的后端系统,注册用户,列出,创建JWT令牌,并检查JWT是否正常工作,我认为。。。 问题在于react,当文件中API verifyToken中的请求得到验证时,其返回true或false,理论上是其工作的第一个映像。。。所以,当我导出这个文件并在Routes.js中导入时,它不会返回true或false,如图2所示,它会返回一个承诺 我怎么解决这个问题

再一次为我的英语感到抱歉,谢谢你可能的帮助

您需要使用等待或回调承诺,而不是两者都使用:

try {
    const response = await axios.get('/myRequest');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
或者像这样:

axios.get('/myRequest')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
useEffect(() => { 
    isAuthenticated().then(auth=> /*... set the setters hooks or setState ..*/)
});

这是预期的行为。异步函数返回承诺。发件人:

异步函数声明定义了一个异步函数-a 是AsyncFunction对象的函数。异步函数 通过事件以与代码其余部分不同的顺序操作 循环,返回一个隐式承诺作为其结果

您必须记住,一旦您执行了任何异步操作,就不能在同一流程中只执行同步操作

您应该在useEffect挂钩中使用isAuthenticated函数,该挂钩将更改状态

您可以使用如下功能:

axios.get('/myRequest')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
useEffect(() => { 
    isAuthenticated().then(auth=> /*... set the setters hooks or setState ..*/)
});

这是正常的,因为异步函数返回承诺

async function f() {
  return 1;
}

f().then(res => console.log(res)); // 1

你可以这样做来获得你的价值

它返回了一个承诺我不知道如何使用它,我是react的新手,可以解释得更清楚你能写一个例子吗?它成功了,但现在的问题是Routes.js每次去/家时都需要调用isAuthenticated.js,但是我不知道我怎么认为你需要在app.js中添加一个类似isLoggedIn的状态,然后你必须作为道具发送到所有需要检查用户是否为loggedIn的组件。