Node.js 撇号CMS-保护静态内容

Node.js 撇号CMS-保护静态内容,node.js,express,apostrophe-cms,Node.js,Express,Apostrophe Cms,我现在正在使用撇号cms,并使用撇号SAML将整个应用程序放在SAML IDP后面。但是,我注意到,用户上传的文件被放在“公共”目录中,无需登录即可查看。是否有一种方法可以在身份验证后保护上载的图像/视频/文件 撇号express模块有一个中间件选项,但在访问静态内容时似乎没有使用该选项 我的下一次尝试是重写撇号资产方法 self.servePublicAssets = function() { var middleware = []; if (self.lessMiddleware)

我现在正在使用撇号cms,并使用撇号SAML将整个应用程序放在SAML IDP后面。但是,我注意到,用户上传的文件被放在“公共”目录中,无需登录即可查看。是否有一种方法可以在身份验证后保护上载的图像/视频/文件

撇号express模块有一个中间件选项,但在访问静态内容时似乎没有使用该选项

我的下一次尝试是重写撇号资产方法

self.servePublicAssets = function() {
  var middleware = [];
  if (self.lessMiddleware) {
    // bc: only if the new implementation of enableLessMiddleware is in place.
    // If it's an old override, it'll already be added to Express and
    // this property won't be set
    middleware.push(self.lessMiddleware);
  }


  //THIS NEXT LINE IS THE LINE OF INTEREST
  middleware.push(self.apos.express.static(self.apos.rootDir + '/public'));
  //SEE THE LINE ABOVE


  self.expressMiddleware = {
    // Run really early, before all of the stuff apostrophe-express normally
    // puts in, for performance reasons. Preempts expensive
    // queries related to `apostrophe-global` on every static file
    when: 'beforeRequired',
    middleware: middleware
  };
};
我基本上是想把“兴趣线”换成这样的东西:

middleware.push(self.apos.app.use(self.apos.rootDir + '/public', authMethod(), self.apos.express.static(self.apos.rootDir + '/public')));

但这似乎也不起作用。有没有人有什么想法或者知道怎么做?谢谢。

虽然问题提出时很难,但现在很简单:安装和配置模块。

您的总体方向是正确的,但撇号中还没有此功能。我已经用最新版本为您更新了跟踪它的票证,因为附件现在保留了它们出现的
docid
数组,所以有可能做您想做的事情,根据这些文档正确检查撇号权限:尽管在您的情况下,我认为您只想将其限制为“您已登录“没有比这更严格的了。您的
authMethod
是否被调用?谢谢您的回复。authMethod似乎没有被调用。上面提到的更改只会超时并导致堆溢出错误。有什么想法吗?我会看看你提到的问题,我真的不知道为什么会发生这种情况。我们可以在某个时候为有需要的内部客户机实现此功能,也可以是等待企业客户机支持实现的功能。