节点js JWT获取当前用户

Ant*_*chd 2 node.js jwt

我在使用API​​的Node JS,JWT和Sequelize进行身份验证的应用程序上工作,而我在前端使用React JS / redux。我已经成功实现了该应用程序的登录/注销/注册部分,但是现在我需要访问已登录的current_user。

我在本地存储中放置了一个JWT,但是我想访问用户ID,用户电子邮件,用户名以及有关当前登录用户的更多信息。

我应该使用Cookies吗?LocalStorage?还是应该在API中创建currentUser方法?

如果有人可以帮助我找到一些有用的资源或建议,我会感到迷茫!

谢谢 !

Pau*_*aul 5

如果将这些信息放在JWT的有效负载中,则无需在服务器上解码或需要密钥就可以获取它,因此可以将令牌放在LocalStorage中以便随时使用。根据规范,JWT是<headerINfo>.<payloadInfo>.<signature>。因此,在客户端上,您可以执行以下操作:

// given a payload object of { username: 'bob', userid: 1, email: 'bob@example.com' }
const tokenParts = token.split('.');
const encodedPayload = tokenParts[1];
const rawPayload = atob(encodedPayload);
const user = JSON.parse(rawPayload);
console.log(user.username); // outputs 'bob'
Run Code Online (Sandbox Code Playgroud)

显然,此信息对所有有权访问令牌的客户端都可用,因此您只想将可以放入的内容放入有效负载中。