我已按照本教程中有关如何使用 Node 创建基于 token 的身份验证的教程进行操作 http://www.kdelemme.com/2014/08/16/token-based-authentication-with-nodejs-redis/
我已经解决了所有问题,但我遇到了 1 个问题。
我存储 token 的方式是:
key = token
VALUE = UserData(用户名、电子邮件等)
为了保护多台设备登录,我想使现有的 token 失效,并生成一个新的 token 。在登录期间,我想检查用户的 token 是否已经存在。但是,我需要按值查找键。 (我需要通过电子邮件找到 TOKEN)。但是当我浏览 Redis 文档时,我找不到任何关于按值查找 Key 的行。
非常感谢:)
最佳答案
您基本上必须选择以下两种方法之一:完全扫描数据库或索引。正如这个问题的另一个答案中所建议的那样,全面扫描将非常低效——您将遍历整个 key 空间(或至少所有 token ),并且需要获取每个 token ,直到找到与电子邮件匹配的项。
索引可以让您更快地获得查询的答案,但会占用一些 RAM 和管理开销。虽然 Redis 不提供开箱即用的索引功能,但您可以使用常规的 Redis 数据结构和操作轻松设计它们。例如,完成您想要的事情的直接方法是为每个 token 存储另一个名称为电子邮件且其值为 token 的键。这将允许您使用单个 GET 操作发送 token 和电子邮件。
请注意,这种索引方法将有效地使 token 相关键的数量增加一倍,因此为了优化您的 RAM 消耗,您可能需要考虑其他类型的索引结构(例如,使用哈希对电子邮件 token 对进行分组,其中用作桶)。
关于node.js - Redis:通过电子邮件删除用户 token (按值查找键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971881/