仅对 restify 中定义的路由使用 csrf

Use csrf only for defined routes in restify

我有 restify 应用程序(简单 API)。 我们使用 csurf 库来防止 CSRF 请求。

但我不需要在多个路由上使用 CSRF 验证。

第一个想法,我认为 - 这创建了一个数组,其中包含我不需要的路由,使用 csrf 并验证当前路由。

var routesNoCSRF = ['/api/route1', '/api/route2'];
if (routesNoCSRF.indexOf(currentRoute) === -1) {
  server.use(csrf({
    cookie: true,
    ignoreMethods: ['HEAD', 'OPTIONS']
  }));
}

但是在这一步我没有访问 currentRoute

其次 - 这将一个 API 划分为 2 个不同的 API - 第一次使用 csrf 验证第二次 - 不是。在这种情况下 - 我们创建了 2 个不同的服务器,它们监听 2 个不同的端口。

但我会只使用一个应用程序来做到这一点。可能吗?

在 csurf github 页面上有一个忽略路由的完整示例。

https://github.com/expressjs/csurf