use*_*148 5 authentication cookies session laravel
我正在使用数据库会话驱动程序尝试在两个laravel应用程序之间共享会话.两个应用程序的会话cookie名称和加密密钥是否相同?过去几天我在这个问题上遇到了很多困难.任何帮助是极大的赞赏.谢谢!
Bay*_*que 11
与会话相关的所有内容都应相同.基本上session.php两者之间的文件应该是相同的,它们应该有一个共同的数据库,密钥和密码类型应该是相同的.
如果它们具有相同的域名(例如server1.mydomain.com,server2.mydomain.com但)但不同的主机名/子域名,那么只要您正确设置域(例如.mydomain.com),cookie仍然可以正常工作.如果它们位于同一服务器上,您仍然可以使用通用键值系统.如果它们位于不同的服务器上,则需要一个公共存储位置(如S3)或启用复制的键值系统(如Redis或Memcached).如果你需要复制其他数据类型,你也可以使用MySQL,但它对于键值对非常重.
如果他们有完全不同的域名,那么cookie将不起作用.在这种情况下,您需要通过GET查询字符串引用跨站点会话ID ,并使用通用或复制系统或通过某些安全API在后端执行会话迁移.这是一个非常难以设置的系统,只有在使用站点中嵌入的链接在域之间移动时才有效.书签或手动地址输入将丢失会话数据.
现在有一种更好的方法可以使用JSON Web Tokens(JWT)来处理这个问题.基本思想是,不是共享必须保持同步的会话ID数据库,而是共享用户数据库.用户数据库将需要更少的写入,因为大多数数据将是静态的,这反过来使得在多个应用程序之间复制或拆分更容易.JWT以加密格式保存所有相关会话数据,以防止篡改.这允许前端客户端保留JWT并在请求时将其传递给后端客户端.然后,后端客户端仅负责检查JWT内的数据是否与其用户数据数据库匹配.如果匹配,则可以假定用户已经过身份验证.还有一些比我在这里解释的更多,但我建议查看网站以获得完整的解释(https://jwt.io/).
最棒的是,开始在Laravel中使用起来非常容易.添加JWT-Auth依赖项,您就可以使用JWT了.
我要补充的一个警告是,如果您跨域请求,您可能会遇到与新浏览器的跨源资源共享(CORS)问题.如果遇到这种情况(Laravel-CORS),可以轻松修复.
| 归档时间: | 
 | 
| 查看次数: | 4647 次 | 
| 最近记录: |