当前位置: 首页 > 面试题库 >

将Express中的特定中间件用于除特定路径之外的所有路径

龙弘济
2023-03-14
问题内容

我在带有一些中间件功能的node.js中使用Express框架:

var app = express.createServer(options);
app.use(User.checkUser);

我可以将.use函数与附加参数一起使用,以仅在特定路径上使用此中间件:

app.use('/userdata', User.checkUser);

是否可以使用path变量,以便将中间件用于除特定路径(即根路径)以外的所有路径?

我在想这样的事情:

app.use('!/', User.checkUser);

因此User.checkUser,总是调用除根路径以外的其他路径。


问题答案:

我会将checkUser中间件添加到我的除首页之外的所有路径中。

app.get('/', routes.index);
app.get('/account', checkUser, routes.account);

要么

app.all('*', checkUser);

function checkUser(req, res, next) {
  if ( req.path == '/') return next();

  //authenticate user
  next();
}

您可以使用下划线扩展它,以在未经身份验证的路径数组中搜索req.path:

function checkUser(req, res, next) {
  var _ = require('underscore')
      , nonSecurePaths = ['/', '/about', '/contact'];

  if ( _.contains(nonSecurePaths, req.path) ) return next();

  //authenticate user
  next();
}


 类似资料:
  • 问题内容: 我有一个使用httprouter和negroni的Web服务器。用户通过外部OAuth登录此系统。我们将令牌保存到表明他们是否已登录的加密会话中。我想使用中间件来验证此令牌是否存在,如果不存在,则将用户踢回到登录页面。我想从身份验证中间件中排除一些路由。negroni自述文件中有一个使用大猩猩mux进行此操作的示例,但是我无法完全理解使用httprouter进行此操作的可扩展性。类似于

  • 问题内容: CSS代码(我需要什么) HTML代码 CSS没有按我的预期工作。 我实际上想为所有元素定义样式,但带有的样式除外。 我怎样才能做到这一点? 问题答案: 使用:not选择器: 更新:而不是: 更新: CSS2选择器 ,类似于 Tom Heard-s的 答案:

  • 我有一个节点。我想在其中添加炫耀文档的jsAPI。客户通过JWT授权,因此我将此添加到安全中: 然后我可以将它添加到不同的路径中,告诉客户端,要做到这一点,您需要登录。 但是,如何添加更具体的安全约束呢?例如,用户只有在以该用户身份登录时才能编辑配置文件。或者,如果用户具有超级管理员状态,或者如果他是论坛的管理员,则可以编辑评论,评论将发布在 OR 上,作为创建此评论的用户进行记录。

  • 我正在为我的应用程序创建一个更新,其中有一个文件夹,其中包含保存的图像,我想在GridView中显示。我已经在使用离子库了。库的创建者(Koush Dutta)已经有了一个示例,可以做我想要的事情,并在GridView中显示SD卡中的所有图像。。 我想做的是在GridView中仅显示SD卡上特定文件夹(称为漫画)中的图像。我直接使用上面示例中的代码,只修改了一些名称。 我的问题是,我无法仅将SD卡

  • 是否可以像使用exclude排除文件一样,忽略类似以下的错误消息:< code >/etc/some-tool/some-log:file changed as we read it ? 我使用tar进行系统备份,将stdout和stderr重定向到日志文件中。我有一些包含日志文件的direcotures。我只是不想在我的结果文件中每天都有相同的错误行(如上图所示)。 到目前为止,在上找不到可以帮

  • 我在我的NextJS应用程序中尝试了这个,但我得到了一个错误,即找不到“.next”文件夹。 我搜索了一下,可以找到一些使用“AssetPrefix”或使用“zones”的引用。然而,我真的不明白我应该做什么。 如何将应用程序部署到特定URL