在2个laravel应用程序之间进行通信

时间:2017-10-26 14:47:42

标签: laravel authentication laravel-5.2 acl hmvc

Applicaton Diagram

我试图实现这一点,不同服务器上的laravel框架的不同安装相互协作并与主应用程序(超级应用程序)共享资源,如上图所示。

超级应用程序位于主服务器上,并包含用户管理模块,用于确定当前登录系统的用户。 如果登录,则可以加载其他模块,这是另一个位于不同服务器上的laravel 5设置。

这些应用程序仅在用户登录主应用程序时才有效。并且Super应用程序上的Auth-> user()对象被发送到相应的应用程序(A1和A2)以进行数据输入。

我最初的方法是使用laravel 5实现HMVC,但是HMVC暗示只使用一个laravel设置,这意味着只使用一个服务器。但是当你有不同的应用程序单独在不同的服务器上运行并尝试将其与来自主服务器的主应用程序的身份验证绑定时,我不知道这有多可能,但我相信它可以完成。

请问我如何实现这一点,这就是我的老板想要的方式,并坚持这样做。

1 个答案:

答案 0 :(得分:1)

这是一个奇怪的设置,但我有两个解决方案:

1)如果您的应用程序可以共享同一个域,则可以使用共享cookie。例如,我们假设您的应用程序配置如下:

SA example.org(指向服务器1)

A1 a1.example.org(指向服务器2)

A2 a2.example.org(指向服务器3)

SA,您可以为子应用程序保存一个标识cookie(每个Laravel安装都可以访问它)。

2)如果您无法共享同一个域,则可以在SA上登录,然后使用某些POST数据重定向到您的子应用程序。 A1A2将能够从请求中收集标识参数并将其保存在会话/ cookie中以便记住您。

最后,使用您的识别码,您可以编写API来检索用户的数据。