jwt在express中token的加密解密实现方法

在我们前面学习了 JWT认证机制在Node.js中的详细阐述 之后,今天来详细学习一下token是如何生成的,secret密钥的加密解密过程是怎么样的。

安装依赖

  • express:用于创建服务器
  • jsonwebtoken:用于生成和验证JWT
  • body-parser:用于解析请求体中的数据
npm install express jsonwebtoken body-parser

设置密钥

SECRET_KEY:用于签名和验证JWT的密钥。请确保在生产环境中使用更安全的方式存储密钥。

// 密钥(请确保在生产环境中使用更安全的方式存储密钥)
const SECRET_KEY = 'your_secret_key';

中间件

bodyParser.json():解析请求体。
// 中间件:解析请求体
app.use(bodyParser.urlencoded({
   
   extended: false}))
authenticateJWT:验证JWT的中间件。如果验证失败,返回403状态码。
// 中间件:验证JWT
const authenticateJWT = (req, res, next) => {
   
   
    const token = req.headers.authorization;
    if (!token) {
   
   
        return res.sendStatus(403);
    }
    jwt.verify(token, SECRET_KEY, (err, user) => {
   
   
        if (err) {
   
   
            return res.sendStatus(403);
        }
        console.log(user, 'user')
        req.user = user;
        next();
    });
};

路由

/register:模拟用户注册并生成JWT。
// 路由:注册用户(示例,仅用于生成token)
app.post('/register', (req, res) => {
   
   
    const {
   
    username, password } = req.body;
    // 在实际场景中,您应该验证用户并存储其信息
    // 这里仅假设用户验证成功
    if (username && password) {
   
   
        // 通过jwt.sign() 生成JWT字符串,
        // 三个参数分别是:1-用户信息对象(不要把密码进行加密),2-加密密钥,3-配置对象 expiresIn-配置token有效期
        const token = jwt.sign({
   
    username }, SECRET_KEY, {
   
    expiresIn: '1h' });
        res.json({
   
   
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值