首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node js JWT获取当前用户

问node js JWT获取当前用户
EN

Stack Overflow用户
提问于 2017-11-12 01:05:58
回答 4查看 6.5K关注 0票数 3

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

我在localStorage中放置了一个JWT,但我希望能够访问用户ID、用户电子邮件、用户名和有关当前登录的用户的更多信息。

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

如果有人能帮我找到一些有用的资源或建议,我对此有点迷惑!

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-11-12 01:10:24

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

票数 2
EN

Stack Overflow用户

发布于 2017-11-12 01:20:23

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

代码语言:javascript
复制
// 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'

显然,这些信息对任何有权访问令牌的客户端都是可用的,所以您只需要在有效负载中放入可以访问的内容即可。

票数 7
EN

Stack Overflow用户

发布于 2021-01-31 15:10:15

你可以制作一个中间件,如果你还没有这样做的话,它将确保用户信息总是对那些需要它的路由可用:

代码语言:javascript
复制
const auth = jwt({
    secret: JWT_SECRET,
    userProperty: 'payload',
    algorithms: ['HS256']
});

module.exports = auth;

然后,您应该拥有包含用户详细信息的req.payload。或者,您可以检查标头中的Authorization属性,这取决于您如何设置您的应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47240564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档