📅  最后修改于: 2023-12-03 15:26:30.361000             🧑  作者: Mango
JSON Web Tokens(JWTs)是一种常见的身份验证和授权机制,它们使得通过 Web 应用程序进行安全通信变得更加便捷。在本文中,我们将探讨如何在 TypeScript 中使用有效的 JWT。
JWT 由三部分组成:
一个典型的 JWT 的结构如下所示:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
可以看到,JWT 由三部分组成,它们以点号(.)分隔开来。各部分的含义如下:
在 TypeScript 中,我们可以使用 jsonwebtoken 库来生成和验证 JWT,它可以从 npm 上下载和安装依赖:
npm install jsonwebtoken --save
下面是一些 JWT 的基本操作。
import jwt from 'jsonwebtoken';
const token = jwt.sign({ data: 'foobar' }, 'secret', { expiresIn: '1h' });
console.log(token);
// "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiZm9vYmFyIiwiaWF0IjoxNjMwMTY1NjU2LCJleHAiOjE2MzAxNjkyNTZ9.X-O4vFO0j-EWnsMTIWi1snoWLXeiYYt8JjWAEcLTtZE"
import jwt from 'jsonwebtoken';
const token = 'eyJhbGciOiJIU...';
try {
const decoded = jwt.verify(token, 'secret');
console.log(decoded);
// { data: 'foobar', iat: 1630165656, exp: 1630169256 }
} catch (err) {
console.error(err);
}
现在我们有了一个 JWT,我们可以将其发送给服务器,在服务器上验证 JWT 并获取用户信息。下面代码演示了如何验证和获取 JWT 中的用户信息。
import jwt from 'jsonwebtoken';
const token = 'eyJhbGciOiJIU...';
try {
const decoded = jwt.verify(token, 'secret');
const user = await User.findOne({
_id: decoded.userId,
'tokens.token': token,
});
if (!user) {
throw new Error('Unable to find user.');
}
console.log(user);
} catch (err) {
console.error(err);
}
在 TypeScript 中使用 JWT 非常方便,只需要安装依赖并使用 jsonwebtoken 库即可。上面的代码示例演示了如何使用 jsonwebtoken 来生成和验证 JWT,并获取 JWT 中的用户信息。使用 JWT 可以使我们的应用更加安全和便捷。