Session 在两个laravel应用程序之间共享会话

Session 在两个laravel应用程序之间共享会话,session,authentication,cookies,laravel,Session,Authentication,Cookies,Laravel,我正在使用数据库会话驱动程序,试图在两个laravel应用程序之间共享会话。两个应用程序的会话cookie名称和加密密钥是否应该相同?在过去的几天里,我对这个问题感到非常难过。非常感谢您的帮助。谢谢大家! 与会话相关的所有内容都应该相同。基本上,session.php文件在两者之间应该相同,它们应该有一个公共数据库,并且密钥和密码类型应该相同 如果它们有相同的域名(例如:server1.mydomain.com,server2.mydomain.com),但有不同的主机名/子域名,那么只要您正确

我正在使用数据库会话驱动程序,试图在两个laravel应用程序之间共享会话。两个应用程序的会话cookie名称和加密密钥是否应该相同?在过去的几天里,我对这个问题感到非常难过。非常感谢您的帮助。谢谢大家!

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

如果它们有相同的域名(例如:
server1.mydomain.com
server2.mydomain.com
),但有不同的主机名/子域名,那么只要您正确设置域(例如
.mydomain.com
),Cookie仍然可以正常工作。如果它们在同一台服务器上,您仍然可以使用公共键值系统。如果它们位于不同的服务器上,则需要一个公共存储位置(如S3)或一个支持复制的键值系统(如Redis或Memcached)。如果需要复制其他数据类型,也可以使用MySQL,但仅对于键值对来说,MySQL非常繁重

如果它们有完全不同的域,那么cookie将无法工作。在这种情况下,您需要通过
GET
查询字符串引用跨站点会话ID,并使用公共或复制系统,或通过一些安全API在后端执行会话迁移。这是一个很难设置的系统,只有当您使用嵌入在站点中的链接在域之间移动时才能工作。书签或手动地址输入将丢失会话数据


更新:2/4/2016 现在有一种更好的方法使用JSON Web令牌(JWT)来处理这个问题。其基本思想是,与其共享必须保持同步的会话ID数据库,不如共享用户数据库。用户数据库所需的写操作将大大减少,因为大多数数据都是静态的,从而更容易在多个应用程序之间进行复制或拆分。JWT以防止篡改的加密格式保存所有相关会话数据。这允许前端客户端保留JWT,并在请求时将其传递给后端客户端。后端客户机只负责检查JWT中的数据是否与它的用户数据数据库匹配。如果匹配,则可以假定用户已通过身份验证。这比我在这里解释的要多一些,但我建议您查看该网站以获得完整的解释()

最棒的是,它非常容易在Laravel中开始使用。添加依赖项,您就可以启动并运行JWT了

我要补充的一个警告是,如果您执行跨域请求,您可能会在较新的浏览器中遇到跨源资源共享(CORS)问题。如果遇到该()问题,有一些简单的修复方法。

请参阅