【发布时间】:2014-06-12 19:22:30
【问题描述】:
在我的本地机器上,我正在运行 apache 服务器(php、mysql)和简单的 websocket 服务器(c++)。 现在我正在尝试使用令牌进行某种用户授权。在网上搜索了一番后,我决定坚持这个:
- 当客户端代码决定打开 WebSocket 时,它会联系 HTTP 服务器以获取授权“票证”。
- 服务器生成此票证。它通常包含某种用户/帐户 ID、请求票证的客户端的 IP、 时间戳,以及您可能使用的任何其他类型的内部记录保存 需要。
- 服务器存储此票证(即在数据库或缓存中),并将其返回给客户端。
- 客户端打开 WebSocket 连接,并将此“票证”作为初始握手的一部分发送。
- 然后服务器可以比较这张票,检查源 IP,验证票没有被重复使用并且没有过期,然后做任何事情 其他类型的权限检查。如果一切顺利,WebSocket 连接现已验证。
上述解决方案是否意味着必须查询数据库 2 次?首先在第 2 步和第 3 步中,在用户成功登录并 php 生成票证并将其放入数据库后。第 5 步中的第二个,什么时候(这次 websocket 服务器)必须通过再次查询同一个数据库来检查这张票?
【问题讨论】:
-
是的。必须查询数据库两次。一次插入,一次验证。
标签: php mysql authentication websocket