【问题标题】:Laravel Share Session With Socket.io NodejsLaravel 与 Socket.io Nodejs 共享会话
【发布时间】:2018-05-30 04:45:43
【问题描述】:
我的问题很简单。如何与我的 socket.io nodejs 应用程序安全地共享 laravel 会话信息。我尝试了许多不同的方法,但都没有奏效,所以我希望专家能通过。我已经知道我不想使用 JWT 令牌。所以我想这只会留下会话cookie数据本身。我不知道如何使用 cookie 对 socket.io 进行身份验证,所以我需要帮助。我使用 redis 存储会话,并使用 laravel 的默认身份验证系统。
我尝试过使用这个库,它非常适合解析会话。但它没有通过我的 socket.io 服务器进行身份验证。
https://www.npmjs.com/package/node-laravel-session
如果有人知道如何解决这个问题,我将不胜感激。
【问题讨论】:
标签:
node.js
laravel
socket.io
session-cookies
【解决方案1】:
我认为,您在 socket.io 中遇到身份验证问题,想法是您无法轻松地在应用程序之间共享会话,为什么?因为这些数据是在客户端的浏览器(cookie)和服务器(会话)之间处理的,如果你想连接 Laravel 和 Socket.io,首先你必须做一些类似的流程:
- 当用户在网站上进行身份验证时,将 socket.io 的 cookie 设置为
好吧(如果主机不同)。
- 在后台,您必须通过数据库(memcached、redis 等)和 cookie 共享会话数据。如您所知,如果您将 laravel 会话参数设置为与数据库一起使用,而不是使用文件,laravel 将自动开始将会话数据保存到数据库中,因此很容易从数据库中读取会话参数。
我认为你使用 node-laravel-session 是错误的,我的意思是如果你在其他服务器上有 node.js 应用程序并且你使用 getSessionFromFile,它不会工作。确保您正确使用它并且它会起作用。制作这样的东西本身很容易,但是当您进行跨项目会话时,主要问题是安全性。