2013-10-30 85 views
5

我現在正在尋找天,但無法得到答案。 我想做到以下幾點:是否可以從網頁運行節點腳本?

  1. 用戶連接到editor.html(Apache2中基本的HTTP認證)
  2. 用戶想打開一個文件(可以說/home/user1/myfile.txt)上用他的用戶名/密碼的服務器(相同的passwd)
  3. Node.js的腳本以獲取用戶權限startet從上面用戶可以編輯文件

節點腳本將會處理然後通過WebSockets連接和讀/寫入文件。

我認爲最大的問題是無法在網頁上運行服務器上的節點腳本......並且我不想涉及任何php/cgi腳本......只有Apache和Node。 JS/JS。

請也評論或回答,如果你知道這是真的不可能...

謝謝!

柯達

編輯:工作流應該是以下幾點: 用戶訪問網頁 - >輸入他的憑據(相同的passwd) - > Node.js的腳本獲取開始與登錄用戶的用戶權限 - >使用用戶權限讀取或寫入的文件

最大的問題:誰啓動Node.js腳本? Apache的?怎麼樣?

+0

WebSockets(或普通的AJAX)可以很容易地做到這一點。看看Socket.io。 – SLaks

+0

讓你的用戶在服務器上啓動一個任意進程是確保你的系統有後門程序的最好方法。不要這樣做,而是請通過讓用戶這樣做來描述你實際想要達到的目標。 –

+0

apache可以代理nodejs。使用http auth將您的nodejs程序編寫爲一個簡單的Web應用程序,而不是命令行腳本。 – numbers1311407

回答

5

我討厭被這個人,但是......

這是不一樣的節點設計,它的設計使用事件循環,我會建議有節點服務於靜態文件,也許使用Apache作爲代理,然後當有人請求某個頁面時,做需要做的事情,如果你真的必須產生一個子進程,使用child_process.spawn,就用戶權限而言,我建議只傳入一個代碼,比如1 = admin,2 = user,3 = guest,並且子進程可以執行需要的操作。

1

使用Socket.io - Official Socket.IO Website

您也可以使用快捷與插座IO創建一個單獨的應用程序服務器。 - Express JS Website

您可能希望考慮允許用戶直接使用其服務器端帳戶進行連接的安全隱患。也有許多應用程序已經這樣做,您可能會考慮實施這些應用程序,而不是編寫自己的應用程序,並具有所需的所有正確嵌入的安全性。

+0

我的問題是我不想在開始時運行節點服務器。我也不想以超級用戶身份運行節點服務器,並且在連接時向用戶運行chroot。用戶應登錄網頁,然後在服務器端查看編輯器,當用戶登錄時,Node.js服務器會以登錄用戶的身份獲取startet。這可以確保用戶只能編輯自己的文件...我只是不知道如何在用戶登錄時啓動服務器,因爲需要啓動節點服務器.... – Nico

+1

你能解釋爲什麼你不想要在開始時運行節點,或爲什麼你不能使用PHP。 您可以通過創建一個文件夾及其用戶名和ID來確保用戶只能編輯他們的文件,並且在請求之前進行檢查,該用戶已通過身份驗證並正試圖訪問文件,該文件的路徑中包含該用戶的名稱和ID +某些前綴。即 用戶「john_smith」只能是在訪問文件: /homes/sites/private/john_smith_439/file.txt 所有用戶都將先通過數據庫認證,並從那裏你可以創建/添加額外的權限等。 –

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.js(Node.js腳本)的AJAX文件onload作爲空文檔。 Node.js得到private/editor.html併發送給用戶,如/editor.html

在這種情況下,用戶在沒有通過認證的情況下永遠不會訪問編輯器。並且在認證之後,node.js服務器啓動並且socket.io被設置並且一切正常。

+0

謝謝,我會評估這個週末並回報! – Nico

0

我找到了一個解決方案:

它可以編寫自定義的認證程序與國防部認證 - 外部Apache: https://code.google.com/p/mod-auth-external/

使用基本身份驗證啓用Web服務器將憑據傳遞到腳本/程序,然後這可以運行節點應用程序。

+0

pwauth(https://code.google.com/p/pwauth/)可以對密碼進行身份驗證。我最終改變了我的需要的源代碼... – Nico

相關問題