3

我想这可能是一个“丢失的案例”,但是是否可以对 DocPad 生成的一个或多个页面进行密码保护?

是否可以制作插件或让您protected = true在页面的元数据部分中说的东西?

还是我必须使用 .htaccess 或类似的东西来保护我的页面?

4

3 回答 3

5

如果您打算在 node.js 托管服务提供商上托管,那么您可以使用以下要点:https ://gist.github.com/4557006

这个想法是我们使用serverExtend事件来添加一个新的 express.js 中间件。通过serverExtend事件添加的中间件是在添加 docpad 的中间件之前添加的,因此这是此身份验证层以及自定义路由/中间件等的大多数其他用例的理想位置。然后,我们的自定义中间件将检查该文档是否被请求的文档是否是受保护的文档,如果不是,它会沿着中间件链继续(可能会点击 docpad 中间件并正常渲染),或者如果它是受保护的文档,那么我们会将其转发到 express basicAuth 中间件。

于 2013-01-17T16:04:33.600 回答
2

我想您确实可以protected = true在页面元数据中声明并在以下位置拥有一个名为 protectedPages 的集合docpad.coffee

collections:
  protectedPages: (database) ->
    database.findAllLive({protected: true})

然后创建一个.htaccess.eco看起来像这样的文件:

AuthUserFile /full/path/to/.htpasswd
AuthType Basic
AuthName "Protected area"

<% for document in @getCollection('protectedPages').toJSON(): %>
  <Files "<%= document.url %>">
    Require valid-user
  </Files>

<% end %>

并且应该很容易将其转换为生成 .htaccess 文件的插件。您可以使用站点地图插件作为示例。

于 2013-01-15T11:29:23.837 回答
0

另一种方式(但现在只是一个概念)可能是:当您使用保护(受保护:密码或需要访问权限:帐户列表)标记文档时,文档被加密,然后由 docpad 作为静态内容发布.

在客户端,如果您访问受保护的页面,则会加载加密内容,并且脚本会要求输入密码(或您的帐户信息),然后尝试使用它解密内容。

因此,您可以在没有 apache 特定 .htaccess 及其性能问题的静态服务器上拥有受保护的内容。

于 2013-06-14T06:04:27.850 回答