Web applications 在不同服务器上的web应用程序之间传递用户数据

Web applications 在不同服务器上的web应用程序之间传递用户数据,web-applications,session,cookies,Web Applications,Session,Cookies,我们有两个不同的web应用程序,它们具有不同的服务器、堆栈等。让我们将其中一个称为Host.example.com上的主机,另一个称为Client.example.com上的客户端 我们希望我们的用户登录到主机,并将他们的凭据和一些其他信息(真实姓名、电子邮件地址、DOB等)传递给客户端。这样做的最佳方式是什么?用户在主机上查看页面时,通过Javascript请求访问客户端 标准: 最重要的标准是对主机的更改应尽可能简单 我们无法重定向用户(尽管他们的JS请求是公平的) 主机必须与平台无关。客

我们有两个不同的web应用程序,它们具有不同的服务器、堆栈等。让我们将其中一个称为Host.example.com上的主机,另一个称为Client.example.com上的客户端

我们希望我们的用户登录到主机,并将他们的凭据和一些其他信息(真实姓名、电子邮件地址、DOB等)传递给客户端。这样做的最佳方式是什么?用户在主机上查看页面时,通过Javascript请求访问客户端

标准:

  • 最重要的标准是对主机的更改应尽可能简单
  • 我们无法重定向用户(尽管他们的JS请求是公平的)
  • 主机必须与平台无关。客户端是AppEngine上的Django,但我认为这并不重要
我们想到了两个选项:

  • 客户端上用于主机传递数据的API。大致上,在登录时,主机获取login/on客户机,并传递会话ID和数据

  • 存储数据的是经过签名或加密的cookie。从最近关于Django中签名cookies的讨论来看,这看起来很难做到正确


这有点粗略,但您可以在客户端上执行重定向到页面,并将相关数据作为GET变量包含。如果这样做,您可能应该对数据进行编码/加密。客户端将拾取数据,设置相关会话信息,然后继续运行。

可能通过共享会话状态?它使用默认的SQL Server会话提供程序并调整GetTempAppId存储过程以提供相同的值,因此使存储和检索看起来就像是从单个应用程序中进行的。

没有简单的方法可以很好地完成这项工作。有很多方法可以做到这一点,但没有一种方法是简单而安全的。您可以考虑主机上的CGI/FASCGI/Web服务技术。

< P>我认为最好的选择是第一个:

客户端上的API,用于主机传递 数据。大致上,在登录时,主机 获取客户端上的登录名/密码,并传递 会话ID以及数据


也许您可以使用来验证请求。还有一个和另一个。

您也可以使用这些解决方案的混合。如果登录生成了一个哈希/定时SessionID,并将其与IP/userid一起存储在一个小型会话数据库中,那么您可以将该数据存储在域级cookie中,并直接传递。然后,客户机将第一次针对db验证sessionid/timestamp/ip/etc,以验证即时身份验证,然后以其愉快的方式处理用户和会话,不管它希望如何处理它。如果您将时间戳期望值保持在相当短的时间(10秒?),则可以使用并使用它,然后可以使用数据库cron作业来修剪错误或未使用的条目。

您是否可以使用Michael Bray的想法,但用Ajax代替重定向?在服务器1上,将数据发送到服务器2。服务器2,为以后存储临时数据,服务器1,向客户端和服务器2发送密钥,客户端使用密钥从服务器2通过Ajax获取数据。

是的,但我们确实不想重定向。我相应地更新了这个问题。那么浏览器是如何通过javascript请求在客户端上运行的呢。所以我们可以重定向请求,但不能转移用户的注意力。所以客户端的整个交互将通过您的主机服务器运行到客户端服务器。。。就像主机是一个代理一样??也许我只是不理解,但如果是这样的话,我不确定我能帮上什么忙。我们在主机上查看页面。主机页面包含对客户端的javascript调用,其结果显示在页面上。我看不出与第一个选项相比有任何优势。这取决于架构和应用更新的方式。一个是连接的架构,另一个是断开的。我不认为两者都比另一个好,这只是偏好的问题。我有点觉得他们在看API时带着一种“我们真的不想那样做”的心态,所以我提出了一些不同的建议。