Web applications 在不同服务器上的web应用程序之间传递用户数据
我们有两个不同的web应用程序,它们具有不同的服务器、堆栈等。让我们将其中一个称为Host.example.com上的主机,另一个称为Client.example.com上的客户端 我们希望我们的用户登录到主机,并将他们的凭据和一些其他信息(真实姓名、电子邮件地址、DOB等)传递给客户端。这样做的最佳方式是什么?用户在主机上查看页面时,通过Javascript请求访问客户端 标准:Web applications 在不同服务器上的web应用程序之间传递用户数据,web-applications,session,cookies,Web Applications,Session,Cookies,我们有两个不同的web应用程序,它们具有不同的服务器、堆栈等。让我们将其中一个称为Host.example.com上的主机,另一个称为Client.example.com上的客户端 我们希望我们的用户登录到主机,并将他们的凭据和一些其他信息(真实姓名、电子邮件地址、DOB等)传递给客户端。这样做的最佳方式是什么?用户在主机上查看页面时,通过Javascript请求访问客户端 标准: 最重要的标准是对主机的更改应尽可能简单 我们无法重定向用户(尽管他们的JS请求是公平的) 主机必须与平台无关。客
- 最重要的标准是对主机的更改应尽可能简单
- 我们无法重定向用户(尽管他们的JS请求是公平的)
- 主机必须与平台无关。客户端是AppEngine上的Django,但我认为这并不重要
- 客户端上用于主机传递数据的API。大致上,在登录时,主机获取login/on客户机,并传递会话ID和数据
- 存储数据的是经过签名或加密的cookie。从最近关于Django中签名cookies的讨论来看,这看起来很难做到正确
也许您可以使用来验证请求。还有一个和另一个。您也可以使用这些解决方案的混合。如果登录生成了一个哈希/定时SessionID,并将其与IP/userid一起存储在一个小型会话数据库中,那么您可以将该数据存储在域级cookie中,并直接传递。然后,客户机将第一次针对db验证sessionid/timestamp/ip/etc,以验证即时身份验证,然后以其愉快的方式处理用户和会话,不管它希望如何处理它。如果您将时间戳期望值保持在相当短的时间(10秒?),则可以使用并使用它,然后可以使用数据库cron作业来修剪错误或未使用的条目。您是否可以使用Michael Bray的想法,但用Ajax代替重定向?在服务器1上,将数据发送到服务器2。服务器2,为以后存储临时数据,服务器1,向客户端和服务器2发送密钥,客户端使用密钥从服务器2通过Ajax获取数据。是的,但我们确实不想重定向。我相应地更新了这个问题。那么浏览器是如何通过javascript请求在客户端上运行的呢。所以我们可以重定向请求,但不能转移用户的注意力。所以客户端的整个交互将通过您的主机服务器运行到客户端服务器。。。就像主机是一个代理一样??也许我只是不理解,但如果是这样的话,我不确定我能帮上什么忙。我们在主机上查看页面。主机页面包含对客户端的javascript调用,其结果显示在页面上。我看不出与第一个选项相比有任何优势。这取决于架构和应用更新的方式。一个是连接的架构,另一个是断开的。我不认为两者都比另一个好,这只是偏好的问题。我有点觉得他们在看API时带着一种“我们真的不想那样做”的心态,所以我提出了一些不同的建议。