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-出于安全目的,该机密用于对会话数据进行签名。它不是您要存储的数据。它不需要每个用户都是唯一的。你可以硬编码这个秘密。