首页 > 解决方案 > 访问驻留在同一服务器上的 laravel 应用程序内的另一个 laravel 应用程序的会话和 cookie

问题描述

我有这种情况,我有 4 个使用 Laravel 6 构建的网站,它们都驻留在同一台服务器上,并且它们都是子域,例如

https://account.mywebsite.com

https://business.mywebsite.com

https://realestate.mywebsite.com

https://deals.mywebsite.com

问题出在https://account.mywebsite.com,如果我已经在那里进行了身份验证,那么其他 Laravel 网站也必须经过身份验证,因此只需一个单一登录机制。我现在在想什么,如果我可以从帐户网站(https://account.mywebsite.com)访问身份验证会话或 cookie,或者从帐户子域设置自定义身份验证 cookie/会话,那么其余的Laravel 网站访问该身份验证 cookie/会话,然后我可以对 Laravel 网站的其余部分进行身份验证。我相信,每个 Laravel 都存储独特的会话和 cookie。

Session::put('key', 'value');
Cookie::get('name');

所以有什么想法,关于如何从同样位于同一服务器上的其他 Laravel 应用程序访问 cookie 或会话的帮助?

标签: phplaravelsession-cookieslaravel-6

解决方案


最简单的方法是将 cookie 的域更改为根域(没有子域)。这样所有子域都可以访问它们。

在文件SESSION_DOMAIN设置设置.env

SESSION_DOMAIN=mywebsite.com

注意:Laravel 使用APP_NAMEsession cookie name,所以如果你的 Laravel 安装有不同APP_NAME的 s 他们不会共享同一个 session。如果您希望他们共享同一个会话,您可以手动设置SESSION_COOKIE.


推荐阅读