我正在设置一个socket.io服务器来处理socket请求,它运行在1234端口。这个服务器与一个laravel5.1应用程序并行运行,Laravel使用redis来处理会话。
我有很多关于将Laravel与socket.io连接的教程,都相当简单明了。我可以连接、响应并将消息传递回socket并到达Laravel应用。
然而,每个教程都避免了此设置中的身份验证部分。一旦socket:1234空间内接收到消息,如何将该消息转发到Laravel,同时确保该请求被登录认证。
理想情况下,我只需共享会话,并验证XSRF令牌。由于两个应用程序位于不同的端口上,我无法直接获取会话。
目前,我正在使用替代方法,它包括以下步骤:
- 在socket连接(在node中)时,我使用node的Crypto库和node的PHPUnserialise库解密连接时发送的cookie。 - 这使我得到了来自cookie的laravel会话id。 - 我使用这个ID来访问redis laravel session。 - 然后我解密该会话,从而得到对用户ID的访问权限。
虽然这个方法可行,但我觉得它可能是一个安全漏洞,因为我实际上没有使用_token来验证来源。
我有很多关于将Laravel与socket.io连接的教程,都相当简单明了。我可以连接、响应并将消息传递回socket并到达Laravel应用。
然而,每个教程都避免了此设置中的身份验证部分。一旦socket:1234空间内接收到消息,如何将该消息转发到Laravel,同时确保该请求被登录认证。
理想情况下,我只需共享会话,并验证XSRF令牌。由于两个应用程序位于不同的端口上,我无法直接获取会话。
目前,我正在使用替代方法,它包括以下步骤:
- 在socket连接(在node中)时,我使用node的Crypto库和node的PHPUnserialise库解密连接时发送的cookie。 - 这使我得到了来自cookie的laravel会话id。 - 我使用这个ID来访问redis laravel session。 - 然后我解密该会话,从而得到对用户ID的访问权限。
虽然这个方法可行,但我觉得它可能是一个安全漏洞,因为我实际上没有使用_token来验证来源。