处理令牌的架构 (NodeJS) (MongoDB)

Architecture in handling Tokens (NodeJS) (MongoDB)

我想知道以下正确处理令牌的选项的优缺点:

选项A:

(在后端)api.login(用户)>>(使用 Passport 成功)>> createOrUpdateToken >> toSaveTokenInUserDocument >> return用户 >>(在前端)toSavetokenUserInFrontEnd(window.localStorage.setItem)

选项B:

(在后端)api.login(用户)>>(使用 Passport 成功)>> createOrUpdateToken >> toSaveTokenInTokenDocument >> return User&Token >> (In Front-end) toSavetokenUserInFrontEnd(window.localStorage.setItem)

什么是正确的选择?为什么?

听起来你问的主要是一个数据库问题:你应该将你的令牌存储在你的用户文档中吗?还是在单独的 Token 文档中?

这是我的想法:

如果您使用的是 NoSQL 数据库(我假设您是),您最好将令牌直接存储在用户文档中,因为这意味着您将能够避免昂贵的加入行动。

由于每个 API 请求都会使用令牌,因此每次都访问两个集合会占用大量数据库,而不是仅访问用户集合。

通常也是如此:任何需要经常访问的信息最有可能被非规范化以提高速度。

希望对您有所帮助!