假设我正在运行一个加载我的app / page的node.js服务器。我的Node.js服务器通过服务实体的Restful Service从Drupal 8获取内容。这是一种常见的做法。在node.js中验证用户并在nodejs会话中加密用户名+密码是否可以接受?然后在每次向Drupal 8发出请求时,我通过SSL / TLS在Basic Auth标头中传递用户名:密码?
或者使用Drupal Node.js集成模块更好吗?
我们的想法是建立一个面向服务的体系结构并仅将Drupal用作CMS,并将Node.js的所有其他内容保留在其中,其中节点通过REST与所有这些服务和其他(非drupal)进行交互...
我正朝着正确的方向前进吗?有没有人有这种设置的经验?
答案 0 :(得分:0)
Node.js和NPM是运行React,Angular,Vue,Gatsby,Ember等JavaScript应用程序开发框架所必需的,其中程序员使用JSON API和GraphQL来构建自定义应用程序,并以Drupal作为解耦CMS下的后端方法。
考虑到在Drupal 7上,PHP开发人员通常将自定义代码放在一个主题中,该主题需要在运行时由PHPTemplate处理。将复杂的Drupal 7网站转换为Drupal 8时,与在Twig / Synfony2框架下重写主题相比,使用React,Gatsby或Vue通过Node.js解决方案对其进行优化可能更好。与PHP主题相比,使用React / Vue / Gatsby + GraphQL方法可以提高Drupal页面的加载速度。
答案 1 :(得分:-1)
为什么不设置nginx或其他代理,将某些操作路由到drupal,将其他操作路由到nodejs?
编辑:按要求更详细说明:
在nginx plus中有一个名为ngx_http_auth_request_module的模块,我想我可以根据海报问题的描述使用此模块进行身份验证。
https://www.nginx.com/blog/nginx-plus-authenticate-users/
您如何在两个系统之间保持会话和状态?
以下步骤可能是建议的解决方案: 1.)通过nginx登录(显示登录页面), 2.)nginx向后端守护进程发送请求以进行身份验证(在您的情况下为ldap服务), 3.)将ldap模块导入drupal以对相同的凭据进行身份验证, 4.)将凭证转发给drupal 5.)将ldap模块导入nodejs项目以对相同的凭据进行身份验证, 6.)将凭证转发给节点 7.)用于认证的cookie由nginx认证处理,并且可以访问基于反向代理的两个服务而无需通过任何nodejs。
假设node.js必须与其他系统集成
在这种情况下,node.js应该有一个主帐户,它不需要登录凭据,所有权限检查都可以通过这个主帐户完成(你能提供一个示例场景,直接访问drupal需要与节点进行一些交互吗? )。