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 如何在不使用查询参数或全局变量的情况下在express中的路由之间传递值?_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何在不使用查询参数或全局变量的情况下在express中的路由之间传递值?

Javascript 如何在不使用查询参数或全局变量的情况下在express中的路由之间传递值?,javascript,node.js,express,Javascript,Node.js,Express,背景:- 我有一个app.post路由,数据来自HTML页面 我想在不使用查询参数或全局变量的情况下,将contents req.body传递给app.get route。 如果同时用户使用应用程序,查询参数将公开imp详细信息,全局变量将不起作用。 app.post('/tester', (req, res) => { console.log(req.body.var1) res.redirect('/Dashboard'); });

背景:-

  • 我有一个app.post路由,数据来自HTML页面

  • 我想在不使用查询参数或全局变量的情况下,将contents req.body传递给app.get route。

  • 如果同时用户使用应用程序,查询参数将公开imp详细信息,全局变量将不起作用。

     app.post('/tester', (req, res) => {
         console.log(req.body.var1)
        res.redirect('/Dashboard');        
    
        });
    
我想将此值传递给仪表板路由

app.get('/Dashboard', (req, res) => {
         //sone DB operation with values form post route and then display it dynamically 
            res.render('employeeDashboard',{employeeName:employeeFirstName})
        }
    })

}

跨请求共享用户特定数据而不向用户公开数据的标准机制是会话

数据与服务器上的唯一令牌关联,然后将令牌设置为客户端并存储在cookie中。客户机将在后续请求时将其发送回服务器,并且可以通过令牌值从服务器端存储中检索数据

在Express上处理此问题的通常方法是通过


这种技术的一种变体称为flash,它在数据使用一次后擦除数据(这样您就可以使用它进行一次重定向,而不必将其持久化),并在会话之上实现。提供此功能。

跨请求共享用户特定数据而不向用户公开数据的标准机制是会话

数据与服务器上的唯一令牌关联,然后将令牌设置为客户端并存储在cookie中。客户机将在后续请求时将其发送回服务器,并且可以通过令牌值从服务器端存储中检索数据

在Express上处理此问题的通常方法是通过



这种技术的一种变体称为flash,它在数据使用一次后擦除数据(这样您就可以使用它进行一次重定向,而不必将其持久化),并在会话之上实现。提供此功能。

您似乎有两个选项。您需要将每个用户的身体存储在文件或数据库中。或者,您可以使用express session使用cookie为每个用户存储正文。您更喜欢哪一种?任何东西都可以工作,而且速度快且易于实现,您有这两种方法的示例代码吗?与数据库或文件系统操作相关,会话存储更便宜、速度更快@昆汀的回答对你来说已经足够漂亮了。您可以查看express会话模块的示例代码,也可以使用google express会话使用情况。有很多例子。我会研究一下。我查看了提供的链接,看到了这个
app.use(session({secret:'keyboard cat',resave:false,saveUninitialized:true}))
正如您在问题中可能观察到的那样,app.post将从多个用户获得不同的数据,如示例所示,我无法硬编码
secret
值。我需要使用app.post接收到的数据将是不同的,并为每个请求动态存储。这个模块允许动态存储秘密吗?您似乎有两个选择。您需要将每个用户的身体存储在文件或数据库中。或者,您可以使用express session使用cookie为每个用户存储正文。您更喜欢哪一种?任何东西都可以工作,而且速度快且易于实现,您有这两种方法的示例代码吗?与数据库或文件系统操作相关,会话存储更便宜、速度更快@昆汀的回答对你来说已经足够漂亮了。您可以查看express会话模块的示例代码,也可以使用google express会话使用情况。有很多例子。我会研究一下。我查看了提供的链接,看到了这个
app.use(session({secret:'keyboard cat',resave:false,saveUninitialized:true}))
正如您在问题中可能观察到的那样,app.post将从多个用户获得不同的数据,如示例所示,我无法硬编码
secret
值。我需要使用app.post接收到的数据将是不同的,并为每个请求动态存储。这个模块允许动态存储秘密吗?谢谢你,昆汀。你有参考的示例代码吗?文档中有示例代码。我会检查它的。谢谢你我检查了你提供的链接,我看到了这个
app.use(session({secret:'keyboard cat',resave:false,saveUninitialized:true}))
正如您在问题中可能观察到的,app.post将从多个用户处获取不同的数据,我无法硬编码
secret
calue,如示例所示。我需要app.post收到的数据将是不同的,并为每个请求动态存储。此模块是否允许动态存储机密?@JatinMehrotra-出于安全目的,该机密用于对会话数据进行签名。它不是您要存储的数据。它不需要每个用户都是唯一的。你可以硬编码这个秘密。谢谢你,昆汀。你有参考的示例代码吗?文档中有示例代码。我会检查它的。谢谢你。我检查了你提供的链接,我看到了这个
应用程序。使用(会话({secret:'keyboard cat',resave:false,saveUninitialized:true}))
,正如你在问题中可能观察到的那样,app.post将从多个用户处获取不同的数据,我无法像示例中所示硬编码
secret
calue。我需要app.post收到的数据将是不同的,并为每个请求动态存储。此模块是否允许动态存储机密?@JatinMehrotra-出于安全目的,该机密用于对会话数据进行签名。它不是您要存储的数据。它不需要每个用户都是唯一的。你可以硬编码这个秘密。