📜  express 从标头中获取 jwt 令牌 - Javascript (1)

📅  最后修改于: 2023-12-03 15:00:40.287000             🧑  作者: Mango

Express 从标头中获取 JWT 令牌 - JavaScript

简介

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 的中间件函数。该函数将在受保护的路由中使用。

中间件函数接收 reqresnext 参数。在请求头中,我们会查找一个名为 Authorization 的标头。如果找到了这个标头,我们会将其替换为 Bearer,然后提取出 JWT 令牌。

之后,我们使用我们在应用程序中定义的秘密密钥(mysecretkey)对令牌进行验证。如果验证成功,我们将从 JWT 令牌中提取用户信息,然后将其保存到 Express 请求对象中,以便稍后使用。

如果出现任何错误,我们将使用 res.status() 方法发送“认证失败”的响应。

结论

在本文中,我们详细介绍了如何使用 Express 从请求标头中提取 JWT 令牌。使用以上内容,读者可以构建一些安全的REST API并确保认证后的权限仅保留给特定用户。