以下是保护Node.js REST API以供React.js Web应用程序和独立API使用的解决方法,包含代码示例:
代码示例:
// 1. 安装依赖
npm install jsonwebtoken
// 2. 创建登录/注册路由
const express = require('express');
const jwt = require('jsonwebtoken');
const router = express.Router();
router.post('/login', (req, res) => {
// 验证用户凭据
const { username, password } = req.body;
// 验证逻辑...
// 生成JWT
const token = jwt.sign({ username }, 'secretKey');
res.json({ token });
});
// 3. 使用JWT验证中间件保护API路由
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
// JWT验证中间件
function authenticateToken(req, res, next) {
const token = req.header('Authorization');
if (!token) return res.sendStatus(401);
jwt.verify(token, 'secretKey', (err, user) => {
if (err) return res.sendStatus(403);
req.user = user;
next();
});
}
// 受保护的API路由
app.get('/api/data', authenticateToken, (req, res) => {
// 获取数据的逻辑...
res.json({ data });
});
代码示例:
// 1. 安装依赖
npm install cors
// 2. 配置CORS
const express = require('express');
const cors = require('cors');
const app = express();
// 允许React.js Web应用程序的请求
app.use(cors());
// 受保护的API路由
app.get('/api/data', (req, res) => {
// 获取数据的逻辑...
res.json({ data });
});
代码示例:
// 1. 配置HTTPS
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('private-key.pem'),
cert: fs.readFileSync('certificate.pem')
};
// 创建HTTPS服务器
https.createServer(options, app).listen(443);
// 受保护的API路由
app.get('/api/data', (req, res) => {
// 获取数据的逻辑...
res.json({ data });
});
综上所述,以上是保护Node.js REST API以供React.js Web应用程序和独立API使用的解决方法,包含了身份验证和授权、CORS配置以及使用HTTPS来保护通信的示例代码。