【发布时间】:2017-04-11 02:10:10
【问题描述】:
我正在创建一个使用 React 的前端和一个使用 Node.js 的后端。我想使用 Auth0 Lock 管理用户信息 - 向 API 发送每个请求的 JWT。
如果我需要做以下事情之一怎么办?
- 使用作者 ID 存储博客文章
Auth0 唯一标识符是user_id,它不是整数,因此不能用作 ID/密钥。我将如何在服务器端用户存储上处理这个问题?
- 有一个用户表来存储“个人资料”或其他类似信息
我是否在每个 API 请求上读取 JWT,确定该用户是否存在,如果不存在则创建一个新用户,或者如果存在则将其与预先存在的用户相关联。在每个 API 请求上检查用户数据库是否高效?
我不确定如何使用基于 JWT 的 API 和 Auth0 处理一般流程。
编辑:
我的一些研究和反思后的想法:Auth0的唯一用户标识符由他们提供为user_id。这里的问题是它不是整数。因此,它不应用作数据库中users 表的键。
似乎您不应该在每个请求上检查用户数据库,但这可能是不正确的。一个想法是在初始登录时回调到后端,如果帐户不存在,则创建它,如果帐户确实存在,则继续。然后,在用户登录前端后,只需在每个后续请求中信任 Auth0 JWT(如果它在后端验证)。
从我在网上看到的对这个过程的极少数描述来看,我描述的方式似乎是正常的方式。但是在某些情况下它没有意义。如果要禁止用户怎么办?他们仍然可以使用活动的 JWT 访问服务器功能,直到过期。
那么,如果在每个 API 请求上检查用户存储是正常/高效的,我如何将 Auth0 的字符串 ID user_id 与数据存储中的整数 ID 关联起来进行查询?我正在使用 SQL 变体。
【问题讨论】:
-
解决您的被禁用户问题的方法是使用缓存。在第一次调用时,您的应用程序检查缓存,如果它们不存在,缓存将尝试从数据库中获取它们,然后返回该用户信息。当用户被封禁时,封禁代码也必须将用户从缓存中清除,这样下次拉取新数据时,也会得到封禁标志。
标签: javascript node.js reactjs jwt auth0