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

时间:2015-01-20 11:35:19

标签: php node.js security authentication elgg

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

如何在不必重写Node中的身份验证代码的情况下保护对Node.js应用程序的访问?有没有办法让用户只有在登录到PHP应用程序时才能访问Node.js应用程序?

4 个答案:

答案 0 :(得分:1)

Use PHP and Node with a shared DB for confirming session 您可以使用数据库或其他共享存储库来存储用户会话ID,Node可以检查以确保用户已登录。

答案 1 :(得分:1)

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

用户登录PHP应用程序后,将为phpapp.mydomain.com(* .mydomain.com)创建带有身份验证令牌的Cookie。在nodeapp.mydomain.com上托管的Node应用程序可以访问在phpapp.mydomain.com上创建的cookie身份验证令牌。

答案 2 :(得分:0)

通常,您可以将Node.js应用程序设置为Web服务,使其在本地而不是公开,然后编写执行auth的PHP代码,然后调用Node.js提供的API,然后构建响应用户使用该数据。

答案 3 :(得分:0)

我写了一个Elgg插件,它提供了访问node.js服务器for websocket的功能。您可以在此处查看代码:elgg-nodejs

我只是解析cookie以获取会话用户:

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

也许这不是最好的安全方法......