通过多个 Laravel 5 安装跨子域共享身份验证会话

Posted

技术标签:

【中文标题】通过多个 Laravel 5 安装跨子域共享身份验证会话【英文标题】:Share auth sessions across sub domains with multiple Laravel 5 installations 【发布时间】:2015-12-17 08:54:30 【问题描述】:

我有两个子域,每个子域都安装了自己的 Laravel 5.1 并共享同一个数据库。

app.project.dev 用户可以在其中编辑他们的项目

*.project.dev 其中* 是用户名

我正在创建一个网站构建器,所以当用户在*.project.dev 查看他们的网站时,我想检查他们是否仍然登录到app.project.dev 并显示一些额外的功能。

我尝试在两个实例上将'domain' => .project.dev 更改为config/session.php 并获得不同的会话cookie。我认为这仅在不同的子域使用相同的安装时才有效。

【问题讨论】:

我建议使用数据库方法解决方案,因为两个项目共享同一个数据库。只需将用户标记为已登录相应的表,当您想要显示更多信息时,检查用户的状态,然后显示额外的功能。 听起来可行。只是出于好奇,如果他们没有自己注销但会话超时,是否有办法告诉数据库将他们标记为已注销? 您可以在会话到期时触发事件以将用户的状态更改为已注销。 实际上,我认为我确实需要 cookie 会话,因为 *.project.dev 是公开的,我需要将 */username 与匹配会话匹配,这样只有他们才能看到额外的功能。 谢谢,我刚刚读到了。 【参考方案1】:

我从未尝试过,但有一个想法:将两个 lavarel 安装配置为使用相同的 storage 目录。这是默认保存会话的地方。

否则,可以使用custom session driver,可能由您的数据库支持。

【讨论】:

还没有,这是我要做的最后一个。另外,我现在正在将 JTW auth 用于管理区域,并希望看看这是否有助于跨域会话。

以上是关于通过多个 Laravel 5 安装跨子域共享身份验证会话的主要内容,如果未能解决你的问题,请参考以下文章

跨子域共享 ASP.NET cookie

Auth::user() 不会跨子域传输? - Laravel 5.2

Laravel 5.4 通过子域运行所有路由

如何在子域共享主机上安装 laravel

跨多个数据库共享用户表以实现单次登录

子域和使用 laravel 进行身份验证