MST

星途 面试题库

面试题:Node.js中JWT身份验证的基本实现步骤

在Node.js项目中,简述使用JWT实现身份验证的基本步骤,包括如何安装相关依赖、生成JWT令牌以及验证JWT令牌。
43.4万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试
  1. 安装相关依赖: 在Node.js项目目录下,使用npm安装jsonwebtoken库,命令如下:
    npm install jsonwebtoken
    
  2. 生成JWT令牌: 假设在Node.js的某个路由处理函数或服务函数中生成JWT令牌。首先引入jsonwebtoken模块:
    const jwt = require('jsonwebtoken');
    
    然后,设置JWT的载荷(payload),例如用户信息:
    const payload = {
        userId: 1,
        username: 'exampleUser'
    };
    
    接着,设置JWT的密钥(secret),这应该是一个保密的字符串:
    const secret = 'your-secret-key';
    
    最后,使用sign方法生成JWT令牌:
    const token = jwt.sign(payload, secret, { expiresIn: '1h' });// 设置令牌1小时过期
    console.log(token);
    
  3. 验证JWT令牌: 在需要验证令牌的地方,同样引入jsonwebtoken模块:
    const jwt = require('jsonwebtoken');
    
    假设从请求头中获取令牌(常见的做法),例如在Express应用中:
    const express = require('express');
    const app = express();
    app.use((req, res, next) => {
        const token = req.headers['authorization'];
        if (!token) {
            return res.status(401).send('Token is missing');
        }
        const secret = 'your-secret-key';
        try {
            const decoded = jwt.verify(token.replace('Bearer ', ''), secret);
            req.user = decoded;
            next();
        } catch (err) {
            return res.status(401).send('Invalid token');
        }
    });
    
    这里先检查令牌是否存在,然后使用verify方法验证令牌,验证通过则将解码后的载荷(通常包含用户信息)挂载到请求对象req上,以便后续中间件或路由处理函数使用,验证失败则返回错误。