我想将相当大的应用程序中的某些部分解耦,并将它们委托(delegate)给外部 Node 应用程序,主要用于上传,但身份验证仍然是一个问题。
在 Rails 方面,我使用 Devise,客户端和表单将指向 Node 应用程序所在的这个新子域。
Node 应用程序正在使用express,我可以通过mysql模块连接到共享数据库。
这个想法是使用heroku作为主应用程序,并将上传委托(delegate)给在EC2实例上运行的 Node 应用程序。为了访问该应用程序,我想传递身份验证信息,因为该端点将由 API 客户端和 Web 表单使用。
Devise 支持通过 URL 传递的身份验证 token ,但我想知道您的解决方案是什么。
最佳答案
如果您的子域仅相隔 1 个点,例如 www.myapp.example 和 uploads.myapp.example,您可以共享 session cookie 和数据库中的 session 信息。我只需编写 Node 应用程序来验证每个请求的 session cookie,就像 devise 所做的那样,然后就完成了。上传子域是否面向用户,例如它是否将 HTML 渲染到浏览器或必须显示登录表单?如果是这样,那么数据库中的共享 session 表可能不是最好的主意,但是如果node.js只是用于上传并且可以在 session 无效时重定向到www.myapp.example,那么一切都应该很好。只需确保将 Cookie 的域字段设置为 .myapp.example
。
关于ruby-on-rails - 在同一域上的 Node 应用程序和 Rails 应用程序之间共享身份验证数据的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6976301/