多个Laravel应用的单个身份验证



我有3个带有3个数据库的Laravel应用程序。应用程序1是身份验证(注册和登录)的登录,仅连接到用户数据库。

应用程序2允许用户执行一些基本操作,并可以连接到用户和App2数据库

应用程序3允许用户执行与应用程序2不同的其他操作,并连接到用户和App3数据库

现在,我的问题是允许用户通过任何应用程序一次looggin,并自动登录到其他应用程序

更喜欢拥有一个在所有应用中使用的Google帐户。

应用程序1将通过主URL

访问
  www.kokoka.com

虽然其他人将通过

访问
  health.kokoka.com
  school.kokoka.com

我尝试过https://github.com/awnali/sso-laravel-5

我也更改了session.php

中的域
  'domain'=>'.domain.dev'

无用

您需要将会话文件设置为数据库,并且与会话相关的所有内容都应相同。基本上,session.php文件在两者之间都应相同,它们应该具有一个共同的数据库,并且密钥和密码类型应相同。

如果它们具有相同的域名(ex:server1.mydomain.com,server2.mydomain.com),但是不同的主机名/子域名称,只要您正确设置域,cookie仍应工作正常(ex。mydomain.com)。如果它们在同一家服务器上,您仍然可以使用通用的键值系统。如果它们在单独的服务器上,则您要么需要一个通用的存储位置(例如S3),要么需要启用复制的键值系统,例如Redis或Memcached。如果您需要复制其他数据类型,也可以使用mySQL,但是仅键值对很重。

如果它们具有完全不同的域,则cookie将不起作用。在这种情况下,您需要通过获取查询字符串参考跨站点会话ID,并使用常见或复制的系统或通过某些安全的API在后端执行会话迁移。这是一个很难设置的系统,只有在使用网站中嵌入的链接之间在域之间移动时才有效。书签或手动地址输入将丢失会话数据。

Acounter您需要的另一种方法是使用Laravel Passport的新拟合。

Laravel已经使通过传统登录表进行身份验证变得容易,但是API呢?API通常使用令牌来验证用户,并且在请求之间不维护会话状态。Laravel使用Laravel Passport使API身份验证变得轻而易举,该护照在几分钟内为您的Laravel应用程序提供了完整的OAuth2服务器实现。Passport是由Alex Bilbie维护的League OAuth2服务器的顶部建造的。

这将使您通过API在多个域共享数据,因此您可以共享会话和用户信息。这是大多数人喜欢的方式。

相关内容