保护与PHP应用程序集成的Node.js应用程序

我有一个现有的第三方PHP Web应用程序(ELGG),我想扩展一个Node.js应用程序。 用户在PHP应用程序中通过检查他们提供的凭据来对MySQL数据库进行身份validation。

如何保护对Node.js应用程序的访问而不必重写Node中的validation代码? 有没有办法让用户只有login到PHP应用程序才能访问Node.js应用程序?

使用PHP和Node共享数据库来确认会话 您可以使用数据库或其他共享存储库来存储用户会话ID,Node可以检查以确保用户已login。

我认为最好的方法是让PHP和Node应用程序作为同一个根域的子域进行操作,然后让Node应用程序检查PHP应用程序的auth cookie。 这将避免在Irwin的答案中额外的数据库调用。

一旦用户login到PHP应用程序,将为phpapp.mydomain.com(* .mydomain.com)创build一个带有身份validation令牌的Cookie。 在nodeapp.mydomain.com上托pipe的Node应用程序可以访问在phpapp.mydomain.com创build的cookie授权令牌。

一般来说,你可以使Node.js应用程序成为一个Web服务,使其在本地而不是公开的,然后编写执行auth的PHP代码,然后调用Node.js提供的API,然后使用该代码为用户构build一个响应数据。

我写了一个Elgg插件,它提供了访问websocket的node.js服务器的function。 你可以在这里检查代码: elgg-nodejs

我只是parsingcookie获取会话用户:

getElggSession = function(socket) { return socket.handshake.headers.cookie.match(/Elgg=(\S*);?/)[1]; }; 

也许这不是安全的最佳方法…