Node.js Expressjs中受密码保护的视图

Node.js Expressjs中受密码保护的视图,node.js,authentication,express,Node.js,Authentication,Express,我正在尝试设置此场景: 我有一个view/quote/quoteId,但要首先访问该视图,您需要输入存储在db中的密码 我不能使用中间件,因为我需要首先知道quoteId以匹配输入的密码 最好的方法是什么 路线代码: router.get('/quote/:q', /*passwordAccess,*/ function(req, res) { var quoteId = req.params.q || ''; quotes.findOne({id: quoteId}, func

我正在尝试设置此场景:

我有一个view/quote/quoteId,但要首先访问该视图,您需要输入存储在db中的密码

我不能使用中间件,因为我需要首先知道quoteId以匹配输入的密码

最好的方法是什么

路线代码:

router.get('/quote/:q', /*passwordAccess,*/ function(req, res) {

   var quoteId = req.params.q || '';

   quotes.findOne({id: quoteId}, function(err, data) {
      if(err){
         console.log(err);
         return next();
      }else if(data === null){
         res.render('404', {msg: "quote not found"});
      }else{
         if(data.isEnabled){
            res.render('quote', {quote: data});
         }else{
            res.render('404', {msg: "quote disabled"});
         }
      }
   });
});
我需要将某种HTML表单的密码输入与data.access\u密码匹配

提前谢谢

我不想使用Passwport,因为我不需要会话和cookies。只是密码匹配。

首先, 当您需要密码保护的页面时,应该使用POST方法而不是GET方法。尽管如此,如果您想发出如上所述的GET请求

您可以发送类似-/quote/10?pwd=mypwd的请求

你可以把你的变量放进去-

var pwd=请求参数pwd | |


希望这对你有帮助。谢谢

我需要使用get,因为用户应该能够访问/quote/3138219321。该解决方案可能会起作用,但我需要用户从另一个视图的表单中输入密码。在这种情况下,您可以使用express session并将密码放入会话中。不…只需使用express session存储密码…passport集成是另一种情况…您的示例与此代码不起作用,不知道为什么:router.get'/test/:q',functionreq,res{console.logid+req.params.q;console.logpwd+req.params.pwd;};url:/test/someid?pwd=pass