gpt4 book ai didi

php - Laravel 5 : Socket. 使用 Laravel session 数据的 io 客户端身份验证

转载 作者:可可西里 更新时间:2023-11-01 12:52:13 24 4
gpt4 key购买 nike

我想根据 Laravel 创建的客户端 session 数据对 socket.io 客户端进行身份验证。

我想到的是:

A - 从客户端向服务器发送用户名和电子邮件;

B - 在用户登录后将我的 socket.io 服务器需要的数据存储在 php 的 Redis 中,然后根据 session cookie id 在 Node.js 中读取它。如果我更喜欢这种方法,我可能必须在 Redis 中存储 sessionId -> "email, name"。;

C - 在 Laravel 中使用 Redis session 驱动程序,解码 Laravel 设置的 cookie,从 Node.js 访问 Laravel session 值,反序列化和解码它们;

方法 A 显然非常不安全,只能用于证明概念。

方法 C 似乎更好,因为我不必复制或管理 session 数据,而只需对其进行解码。然而,这种方式将我的应用程序与 Laravel 托管 session 的实现细节相结合,因此似乎并不合适。

方法 B 看起来更有前途,而且实现起来更简单。但是,使用方法 B 意味着我必须自己管理一些 session 数据,以便 socket.io 能够读取它。这样做可能会使 Laravel session 数据和我存储在 Redis 中的 session 数据相互不一致,并且在某个时间点会发生这种情况。在某些极端情况下,例如过期的 session ID 可能会被重用,并且某些 socket.io 客户端将被错误地验证为另一个用户。目前我想不出更微不足道的案例,但由于这种不一致,我认为可能存在这样的案例,并且安全性和 UX 都可能受到损害。

在 socket.io 应用程序中基于 Laravel session 数据实现用户身份验证的更优雅、健壮和安全的方法是什么?如果没有明显更好的方法并且我认为方法 B 是最好的,我可以做些什么来提高我使用 Redis 和 Laravel session 数据管理的 session 数据之间的一致性。

据我总结,重点实际上是在 Laravel 和 php 之外访问 Laravel session 数据,并通过 sessionId、电子邮件和用户名识别客户端。

最佳答案

我建议您使用 JSON Web Token 身份验证。

JSON Web token (JWt) 是一种相对较新的 token 格式,用于空间受限的环境,例如 HTTP 授权 header 。 JWT 被设计为一种在各方之间传输安全声明的方法。 More detailed info about JWT

用 Laravel 做到这一点的最简单方法是使用像 this one 这样的包。 .或者您可以自己实现。

使用 JWT 身份验证,您将能够从 token 访问用户。例如:

$user = JWTAuth::parseToken()->toUser();

有关如何使用“jwt-auth”的详细信息,请查看 here .

关于php - Laravel 5 : Socket. 使用 Laravel session 数据的 io 客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31233578/

24 4 0
文章推荐: php - 使用 Zend 框架和 Bootstrap 在二级 UL 上设置 CSS 类
文章推荐: java - Java 可以充当命名管道服务器吗?
文章推荐: html - 强制
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com