2017-11-11 272 views
0

我使用节点JS,JWT和Sequelize进行API身份验证,并使用React JS/redux作为前端部分来处理应用程序。我成功实现了应用程序的登录/注销/注册部分,但现在我需要访问current_user登录。节点js JWT获取当前用户

我把一个JWT放在localStorage中,但我想要访问用户ID ,用户电子邮件,用户名和更多关于我当前登录用户的信息。

我应该使用Cookie吗? LocalStorage?或者我应该在我的API中创建一个currentUser方法?

我有点失落,如果有人能帮我找到一些有用的资源或建议!

谢谢!

回答

1

在LocalStorage中存储令牌没问题。如果您需要获取用户详细信息,请在您的API中创建一个端点,如getUser。然后,您可以使用jwt.decode(accessToken, JWT SECRET HERE),并假设accessToken有效,返回解码值(这将是您的用户)。

1

如果您将该信息放入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' 

显然,这种信息是提供给有权限访问令牌的任何客户端,让你只想把东西在有效载荷这对确定。