Node/Express 基于令牌的身份验证

Token Based Authenication with Node/Express

我对 JWT 身份验证的工作原理有点困惑。一旦用户能够登录,我的快速服务器就会用一个令牌进行响应,我将其存储在客户端的本地存储中。对于每个请求,我都会发送该令牌。我的问题是,如何限制用户查看 his/her 特定数据(例如,用户个人资料)?令牌是否能够单独确定哪个用户正在请求服务器端的用户数据,或者我是否必须将用户名与令牌一起发送?这安全吗?

JWT 令牌将包含 3 个部分,其中一个称为有效载荷,您将使用它来存储用户登录时的 ID。当用户使用他的令牌发送请求时,您将对其进行解码并获取从有效负载中获取 id,然后查询您的数据库,您可以获得用户的个人资料。

how do I limit a user to see his/her specific data (e.g., user profile)?

如果您从令牌的有效负载中获取了 id,那么您可以将其与用户想要查看的个人资料的 id 进行比较,如果它们相同则意味着他想要查看他的个人资料。

Is the token alone able to determine which user is requesting the user data on the server side or would I have to send the username along with the token?

不需要用户名,令牌就足够了,因为它可以识别用户。

Is this secure?

阅读此文:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/ 当然还有其他意见,尝试实施最佳实践,我认为你会没事的。