📅  最后修改于: 2023-12-03 15:00:40.287000             🧑  作者: Mango
JWT(JSON Web Token)是在用户和服务器之间安全传递信息的一种标准方式。该令牌可以使用公钥进行签名,确保只有信任的一端才能读取它。在本文中,我们将学习如何从 HTTP 请求头中提取 JWT 令牌。
在 Express 中,我们可以使用中间件函数将令牌从请求头中提取出来。以下是示例代码:
const jwt = require('jsonwebtoken');
const auth = (req, res, next) => {
const token = req.header('Authorization').replace('Bearer ', '');
const secretKey = 'mysecretkey';
try {
const decodedToken = jwt.verify(token, secretKey);
req.user = decodedToken.user;
next();
} catch (error) {
res.status(401).json({ error: 'Authentication failed' });
}
};
在上面的代码中,我们使用了 jsonwebtoken
模块并定义了一个名为 auth
的中间件函数。该函数将在受保护的路由中使用。
中间件函数接收 req
、res
和 next
参数。在请求头中,我们会查找一个名为 Authorization
的标头。如果找到了这个标头,我们会将其替换为 Bearer
,然后提取出 JWT 令牌。
之后,我们使用我们在应用程序中定义的秘密密钥(mysecretkey
)对令牌进行验证。如果验证成功,我们将从 JWT 令牌中提取用户信息,然后将其保存到 Express 请求对象中,以便稍后使用。
如果出现任何错误,我们将使用 res.status()
方法发送“认证失败”的响应。
在本文中,我们详细介绍了如何使用 Express 从请求标头中提取 JWT 令牌。使用以上内容,读者可以构建一些安全的REST API并确保认证后的权限仅保留给特定用户。