使用Node.js实现Token认证:Scotch.io的开源项目详解
// 引入所需模块
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
// 设置服务端的秘钥,用于签发和验证Token
const secretKey = 'your-secret-key';
// 创建签发Token的中间件
const checkJwt = (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (token == null) return res.sendStatus(401); // 如果没有Token,返回未授权的状态码
jwt.verify(token, secretKey, (err, decoded) => {
if (err) return res.sendStatus(401); // 如果Token验证失败,返回未授权的状态码
req.decoded = decoded; // 如果Token验证成功,将解码的内容添加到请求对象
next(); // 调用下一个中间件或路由处理器
});
};
// 保护的路由,需要Token才能访问
app.get('/api/protected', checkJwt, (req, res) => {
res.json({
message: 'This is a protected route!',
decoded: req.decoded // 返回解码的Token内容
});
});
// 监听3000端口
app.listen(3000, () => {
console.log('Server running on port 3000');
});
这段代码实现了一个简单的Express服务器,使用JSON Web Token (JWT)来进行身份验证。它展示了如何设置一个服务器,创建Token,以及如何在Express中使用中间件来保护路由。这个例子教导开发者如何在实际应用中应用JWT进行身份验证和授权。
评论已关闭