5

我现在正在寻找几天,但无法得到答案。我想做以下事情:

  1. 用户连接到 editor.html(具有基本 http 身份验证的 Apache2)
  2. 用户想用他的用户/密码在服务器上打开一个文件(比如 /home/user1/myfile.txt)(与 passwd 相同)
  3. Node.js 脚本从上面获得用户权限,用户可以编辑文件

节点脚本将通过 websocket 处理连接并读取/写入文件。

我认为最大的问题是不可能从网页在服务器上运行节点脚本......而且我不想涉及任何 php/cgi 脚本......只有 Apache 和 Node.js / JS。

如果您知道这确实不可能,也请发表评论或回答...

谢谢!

柯达

编辑:工作流程应如下所示:用户访问网页 -> 输入他的凭据(与 passwd 中相同) -> node.js 脚本以登录用户的用户权限启动 -> 文件以用户权限读取或写入

最大的问题:谁启动 Node.js 脚本?阿帕奇?如何?

4

4 回答 4

6

我讨厌成为这样的人,但是...

这不是节点的设计方式,它旨在使用事件循环,我建议让节点提供静态文件,也许使用 apache 作为代理,然后当有人请求某个页面时,做任何需要做的事情, 如果你真的要生成一个子进程, 就用child_process.spawn, 至于用户的权限, 我建议只传入一个代码, 比如 1=admin, 2=user, 3=guest, 子进程可以做需要的事情.

于 2013-11-10T19:54:32.800 回答
1

使用 Socket.io - Socket.IO 官方网站

你也可以使用 Express 和 socket IO 来创建一个单独的应用服务器。- Express JS 网站

您可能需要考虑允许用户使用其服务器端帐户直接连接的安全隐患。还有许多可用的应用程序已经这样做了,您可能会考虑实施而不是编写自己的应用程序,并且需要所有正确嵌入的安全性。

于 2013-10-30T16:00:09.477 回答
1

让您的用户无需任何身份验证即可获取静态 auth.html 页面(通过 apache)。

让表单提交动作是一些 auth.js(Node.js 脚本)。这个 auth.js 检查用户的身份验证是否成功。如果是这样,它会启动 node.js 服务器,在其上设置 socket.io 并将用户重定向到某个 editor.html。

在这种情况下,您会注意到存在基于 node.js 脚本的身份验证。如果您想要基本的 apache2,我可以向您推荐下一个场景:

服务器上有 auth.html 和 editor.html 页面。最后一个放置在/private文件夹中并且直接访问该文件夹被.htaccess 拒绝。因此,当用户在 auth.html 中通过 apache2 身份验证时,他会获取此 auth.html,它是带有onload将 AJAX 发送到 auth.js(Node.js 脚本)的事件处理程序的空文档。Node.js 获取private/editor.html并将其发送给像/editor.html.

在这种情况下,用户在没有通过身份验证的情况下永远无法访问编辑器。在身份验证 node.js 服务器启动并设置 socket.io 之后,一切都很好。

于 2013-11-06T16:54:53.263 回答
0

我找到了一个解决方案:

可以使用 mod-auth-external 为 apache 编写自定义身份验证程序: https ://code.google.com/p/mod-auth-external/

启用基本身份验证后,网络服务器会将凭据传递给脚本/程序,然后可以运行节点应用程序。

于 2014-01-31T15:56:10.817 回答