Node.js 如何使用app.method()进行授权

Node.js 如何使用app.method()进行授权,node.js,mongodb,express,authorization,saas,Node.js,Mongodb,Express,Authorization,Saas,我正在尝试使用express thennext('route'),但我在文档中没有找到多少关于如何做到这一点的内容。但这并不能解释怎么做 只能在使用app.METHOD()或router.METHOD()函数加载的中间件函数中工作 我不明白他们的意思,因为我以前从未使用过app.METHOD(),而且我也无法找到关于如何正确使用next('route')的文档。这样行吗 app.method('*', (req, res, next) => { if(req.user == null)

我正在尝试使用express then
next('route')
,但我在文档中没有找到多少关于如何做到这一点的内容。但这并不能解释怎么做

只能在使用app.METHOD()或router.METHOD()函数加载的中间件函数中工作

我不明白他们的意思,因为我以前从未使用过
app.METHOD()
,而且我也无法找到关于如何正确使用
next('route')
的文档。这样行吗

app.method('*', (req, res, next) => {
 if(req.user == null) {
   next();
 } else {
   User.findOne({"_id": req.user.id}, function(err, result) {
    if(err){
     console.log(err);
    } else {
     if(stripe.active == false && stripe.trial == false){
      res.render('/dashboard/billing');
      next('route');
    } else {
      next();
    }
   }
  });
 } 
});
这样行吗?我猜我把事情搞砸了。如果我做对了,那么它会找到一个用户,然后检查
is\u active
is\u trial
是否为false,如果是,则跳到下一条路线。我这样做的目的是让用户可以使用站点中没有登录用户的任何部分,然后当有登录用户且两者都为false时,我只让他们转到
/仪表板/账单
。这是向我建议的一种方式,防止尚未付费的用户访问我的应用程序

我正在测试的路线:

// dashboard
 app.get('/dashboard',
 setRender('dashboard/index'),
 setRedirect({auth: '/login'}),
 isAuthenticated,
 (req, res, next) => {      

 },
 dashboard.getDefault);

首先,将方法更改为正确的HTTP方法请求。在文档中,它指定.METHOD()表示的内容:

函数,其中METHOD是请求的HTTP方法 中间件函数处理(如GET、PUT或POST)的 小写

换句话说,.METHOD()是.get、.post、.put等的占位符

尝试在你的应用程序中更改此选项:

app.get('*', (req, res, next) => {
 if(req.user == null) {
   next();
 } else {
   User.findOne({"_id": req.user.id}, function(err, result) {
    if(err){
     console.log(err);
    } else {
     if(stripe.active == false && stripe.trial == false){
      res.render('/dashboard/billing');
      next('route');
    } else {
      next();
    }
   }
  });
 } 
});
看看你能不能从那里解决

更新


在res.render()之后立即调用.next('route')会取消res.render(),因为.next('route')会将请求发送到下一个路由器。

我认为它太字面化了。。。该死。剩下的看起来像样吗?我试图让它工作,但我的问题是,当我的页面全部加载时,我不能将用户配置文件中的变量更改为false。好吧,至少我不知道如何手动操作。我想我可以将
&
更改为
| |
进行测试,但它似乎仍然可以让我进入我不想要的页面。如果stripe.active==false | | stripe.trial==false,是否要将用户发送到下一个路由器?对于测试是,因为这两个都不会是假的,直到14天结束,我不想等那么久。我想如果or起作用,也应该这样。然后我可以在14天内返回到这个问题,当这两个都为假时,以确保它工作,如果没有修复它,那么当我有一个帐户,这将是我需要测试的。你能指定哪些页面你想让用户访问,哪些不?而且“*”会接受任何请求,对吗?我发布了一个小更新。