Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.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
Node.js 如何在node/react中登录保护静态html页面?_Node.js_Reactjs_Routes - Fatal编程技术网

Node.js 如何在node/react中登录保护静态html页面?

Node.js 如何在node/react中登录保护静态html页面?,node.js,reactjs,routes,Node.js,Reactjs,Routes,更新节点并作出反应。所以我有一个静态html页面。prod服务器上的react由nginx运行。我已通过登录保护此路由 {!guest && <Route path="/" component={Home} />} 该文件与nginx提供的服务不同。 谢谢 如果我正确理解了你的问题。有人收到一个HTML文件。如果他们直接进入页面,他们仍然会得到该文件。假设在问题中,您使用的是react路由器,并且文件仍在提供中。您很可能需要检查用户是否登录到服务

更新节点并作出反应。所以我有一个静态html页面。prod服务器上的react由nginx运行。我已通过登录保护此路由

{!guest && <Route path="/" component={Home} />}
该文件与nginx提供的服务不同。
谢谢

如果我正确理解了你的问题。有人收到一个HTML文件。如果他们直接进入页面,他们仍然会得到该文件。假设在问题中,您使用的是react路由器,并且文件仍在提供中。您很可能需要检查用户是否登录到服务器

function isLoggedIn() {
  if (someConditionToCheckUserIsLoggedIn)
    return next();
  else
    res.redirect('/error');
}

app.get('/yourroute', isLoggedIn, function(req, res) {
  // Code
});

这样,如果用户请求某个页面,除非登录,否则不会收到请求的文件。注意:浏览器仍可能缓存文件。

使用react router,您可以加载单个组件。所以,您可以尝试使用一个index.html文件来加载根组件,比如应用程序。然后应用程序包含react路由器。然后,当用户请求路由时,react路由器将使用所需组件进行响应。因此,实际上您有一个index.html文件,用于加载根组件。然后其他所有内容都是一个JavaScript文件。这样,所有请求都可以由客户端处理。然后,如果服务器收到请求,将不会有html文件提供服务。太棒了!这个组件是什么样子的?这里有一篇关于“受保护的路由”的好文章,这正是您想要的:该教程用于保护客户端的react裤子。我想那不行。是的,那就是我要找的!需要为登录检查器写入逻辑!谢谢。react路由应该如何调用yourroute api调用?这里有一篇文章,他们提供一个静态HTML文件并显示内容。注意,这不是很像React,但它应该可以工作。因此,您可以使用Axios或fetch API发出请求。一旦服务器收到请求,您就可以为HTML文件提供服务。然后可以使用组件来显示HTML文件。
app.get('/virtual', function(req, res) {
  res.sendFile(__dirname + "/public/virtualworkouts.html");
});
function isLoggedIn() {
  if (someConditionToCheckUserIsLoggedIn)
    return next();
  else
    res.redirect('/error');
}

app.get('/yourroute', isLoggedIn, function(req, res) {
  // Code
});