首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 5:使用Laravel会话数据进行Socket.io客户端身份验证

Laravel 5:使用Laravel会话数据进行Socket.io客户端身份验证
EN

Stack Overflow用户
提问于 2015-07-05 18:24:38
回答 3查看 4.8K关注 0票数 7

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

我想到的是:

从客户端发送到服务器的用户名和电子邮件;

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

使用Laravel中的Redis会话驱动程序,解码Laravel设置的cookie,从Node.js访问Laravel会话值,对其进行非序列化和解码;

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

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

方法B看起来更有希望,实现起来也更简单。但是,使用方法B意味着我必须自己管理一些会话数据,以便socket.io能够读取它。这样做可能会使我存储在Redis中的Laravel会话数据和会话数据相互矛盾,这将在某个时候发生。例如,在某些极端情况下,可以重用过期的会话id,并且某些socket.io客户端将作为另一个用户进行错误的身份验证。现在我想不出更多琐碎的情况了,但由于这种不一致,我认为可能存在这样的情况,而且安全性和UX都可能受到损害。

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

据我所能总结的全部要点实际上是访问Laravel和php之外的Laravel会话数据,并通过sessionId、电子邮件和用户名识别客户端。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-05 19:17:32

我建议您使用JSON令牌身份验证。

JSON (JWt)是一种相对较新的令牌格式,用于空间受限环境,如。JWT是作为一种在各方之间传输安全声明的方法而设计的。关于JWT的更详细信息

使用Laravel最简单的方法是使用像这一个这样的包。或者你可以通过你自己来实现它。

使用JWT,您将能够从令牌访问用户。例如:

代码语言:javascript
运行
复制
$user = JWTAuth::parseToken()->toUser();

有关如何使用‘jwt’的详细信息,请查看这里

票数 7
EN

Stack Overflow用户

发布于 2015-07-16 17:00:55

正如Alexandros已经指出的,您应该使用JWT。

使用socket.io对JWT进行身份验证很容易。您可以使用索凯提奥jsonwebtoken (在这个文章中描述得很好)来验证您的用户。此外,您可以使用多滕诺夫从Laravel.env文件中读取签名令牌的密钥。

对我来说,它工作得很好,尽管你必须考虑到令牌的失效。在拉勒维尔,jwt使用黑名单来处理这个问题。因此,在您的节点服务器中,您必须自己处理这个问题。或者缩短生命时间。

票数 1
EN

Stack Overflow用户

发布于 2016-07-07 03:48:10

大约一年前,我找到了一个很好的解决方案。我决定让它成为一个模块,它非常容易使用。帮助你在不需要硬编码的情况下得到曲奇。帮助您获取会话Id,并从mysql和redis检索它。

https://www.npmjs.com/package/node-laravel-session

这样你就可以分享你所有的会话。您也可以利用该会话注册用户到特定的房间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31233578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档