我有一个现有的第三方PHP Web应用程序(ELGG),我想用Node.js应用程序进行扩展。通过在MySQL数据库中检查提供的凭据,可以在PHP应用程序中对用户进行身份验证。
如何在不必重写Node中的身份验证代码的情况下保护对Node.js应用程序的访问?有没有办法让用户只有在登录到PHP应用程序时才能访问Node.js应用程序?
答案 0 :(得分:1)
您可以使用数据库或其他共享存储库来存储用户会话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];
};
也许这不是最好的安全方法......