面试题答案
一键面试- 安装相关依赖:
在Node.js项目目录下,使用npm安装
jsonwebtoken
库,命令如下:npm install jsonwebtoken
- 生成JWT令牌:
假设在Node.js的某个路由处理函数或服务函数中生成JWT令牌。首先引入
jsonwebtoken
模块:
然后,设置JWT的载荷(payload),例如用户信息:const jwt = require('jsonwebtoken');
接着,设置JWT的密钥(secret),这应该是一个保密的字符串:const payload = { userId: 1, username: 'exampleUser' };
最后,使用const secret = 'your-secret-key';
sign
方法生成JWT令牌:const token = jwt.sign(payload, secret, { expiresIn: '1h' });// 设置令牌1小时过期 console.log(token);
- 验证JWT令牌:
在需要验证令牌的地方,同样引入
jsonwebtoken
模块:
假设从请求头中获取令牌(常见的做法),例如在Express应用中:const jwt = require('jsonwebtoken');
这里先检查令牌是否存在,然后使用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
上,以便后续中间件或路由处理函数使用,验证失败则返回错误。