节点js JWT获取当前用户
问题描述:
我使用节点JS,JWT和Sequelize进行API身份验证,并使用React JS/redux作为前端部分来处理应用程序。我成功实现了应用程序的登录/注销/注册部分,但现在我需要访问current_user登录。节点js JWT获取当前用户
我把一个JWT放在localStorage中,但我想要访问用户ID ,用户电子邮件,用户名和更多关于我当前登录用户的信息。
我应该使用Cookie吗? LocalStorage?或者我应该在我的API中创建一个currentUser方法?
我有点失落,如果有人能帮我找到一些有用的资源或建议!
谢谢!
答
在LocalStorage中存储令牌没问题。如果您需要获取用户详细信息,请在您的API中创建一个端点,如getUser
。然后,您可以使用jwt.decode(accessToken, JWT SECRET HERE)
,并假设accessToken有效,返回解码值(这将是您的用户)。
答
如果您将该信息放入JWT的有效负载中,则无需在服务器上进行解码或不需要秘密即可获取该信息,因此可以将该令牌放置在LocalStorage中以供任何时候使用。根据规范,智威汤逊是<headerINfo>.<payloadInfo>.<signature>
。因此,在客户端,你可以做:
// given a payload object of { username: 'bob', userid: 1, email: '[email protected]' }
const tokenParts = token.split('.');
const encodedPayload = tokenParts[1];
const rawPayload = atob(encodedPayload);
const user = JSON.parse(rawPayload);
console.log(user.username); // outputs 'bob'
显然,这种信息是提供给有权限访问令牌的任何客户端,让你只想把东西在有效载荷这对确定。