JWT-API使用JWT进行Node.js身份验证

想要在 Node.js 中使用 JWT(JSON Web Token)来做身份验证,jwt-Api是一个不错的选择。它你快速在 API 中集成 JWT,尤其是当你用TypeScript开发时,代码会更加清晰,类型安全性也提高了。JWT 主要包括三部分:头部、负载和签名。你可以用jsonwebtoken这个库来轻松生成和验证 JWT。比如,你可以用以下代码签发一个 JWT:

import jwt from 'jsonwebtoken';
const secret = 'your-secret-key';
function generateToken(payload: any) {
  return jwt.sign(payload, secret, { expiresIn: '1h' });
}
对于验证 JWT,verify方法同样简单,适用于 API 求时的身份验证。

结合TypeScript使用时,你可以提前定义接口来确保 payload 的数据结构一致性,减少运行时错误。这种方式适合做登录鉴权,比如当用户登录成功后,系统会返回一个 JWT,存储在LocalStorage或者Cookie中。每次求时,客户端会把这个 token 放在Authorization头中发送到服务器,确保每次求都是合法的。

举个例子,你可以为需要验证的路由加个中间件来 JWT 验证:

router.get('/protected', async (req, res, next) => {
  const authHeader = req.headers['authorization'];
  if (!authHeader) {
    return res.status(401).json({ message: 'Unauthorized' });
  }
  try {
    const token = authHeader.split(' ')[1];
    const decoded = await verifyToken(token);
    req.user = decoded;
    next();
  } catch (err) {
    res.status(401).json({ message: 'Invalid token' });
  }
});
这就能轻松创建一个安全的 API 啦!如果你想深入了解,可以看看jwt-Api-master这个项目,里面有一些实践代码,你更好地理解如何实现 JWT API,怎么路由、中间件、错误等等。

zip
jwt-Api-master.zip 预估大小:29个文件
folder
jwt-Api-master 文件夹
file
package.json 718B
file
package-lock.json 132KB
folder
dist 文件夹
folder
models 文件夹
file
User.js 2KB
file
User.js.map 844B
file
index.js 563B
file
app.js.map 446B
file
database.js 531B
file
index.js.map 390B
file
database.js.map 385B
folder
routes 文件夹
file
auth.js 519B
file
auth.js.map 375B
folder
controllers 文件夹
file
auth.controller.js.map 2KB
file
auth.controller.js 2KB
file
app.js 619B
folder
libs 文件夹
file
validateTokeb.js.map 126B
file
validateToken.js 630B
file
validateTokeb.js 55B
file
validateToken.js.map 530B
file
.env 24B
folder
src 文件夹
folder
models 文件夹
file
User.ts 924B
file
database.ts 234B
folder
routes 文件夹
file
auth.ts 330B
folder
controllers 文件夹
file
auth.controller.ts 1KB
file
app.ts 294B
file
index.ts 211B
folder
libs 文件夹
file
validateToken.ts 472B
file
tsconfig.json 6KB
file
types.d.ts 81B
file
.gitignore 12B
zip 文件大小:46.46KB