【问题标题】:Communicating between 2 laravel applications在 2 个 laravel 应用程序之间进行通信
【发布时间】:2017-10-26 14:47:41
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你可能想看看这个话题laracasts.com/discuss/channels/laravel/…
  • 好的,@LarsMertens,马上这样做......谢谢
  • 我知道,答案来得太晚了,但现在他们使用 SSO(Signle-Sign-On)。用户在超级应用程序中进行身份验证,并使用基于时间的令牌在其他应用程序中(重新)进行身份验证。这种方式适用于使用相同数据库的分布式应用程序

标签: laravel authentication laravel-5.2 acl hmvc


【解决方案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 来检索用户的数据了。

【讨论】:

  • 我的最后一次尝试是通过 API,但如果我必须这样做,那将非常复杂。尤其是当您必须独立于主应用程序呈现视图时。 API 太繁琐了……
  • 通过API你只需要抓取数据。然后您可以填充辅助应用程序所需的对象。也许在你看来你有{{ \Auth::user()->username }},所以通过抓取用户数据,你可以创建一个新的Auth 守卫并用你的用户数据填充它。那么其他的一切都会是一样的。
  • 谢谢@Vicenzo Maragony ......我刚刚经历了这一切,你的回应对我的追求是有效的......我会采用cookie方法......很有意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多