我正在为邮递员的一个想法而苦苦挣扎(我第一次使用它)。我看了一个课程,其中那个人展示了邮递员中的令牌可以在哪里找到,我们应该使用它。不幸的是我找不到它应该在的地方
我有这个程序的免费版本,但这应该不是问题。我正在研究活跃环境
Postman
:想要作为客户端获取token并更新数据
Server
:提供令牌和更新数据
代币API:
GET http://localhost:8000/api/me
需要
username/password
更新数据API:
POST http://localhost:8000/api/data
需要
access token
#1 用户基本授权
#2 获取Token API调用
#3 响应获取令牌调用
#4 将
access-token
保存到环境变量中
#5 使用
access token
更新数据 API 调用
来自 GET 访问令牌 API 这是响应的正文 “message.token”是 JSON 中的访问令牌示例
{
"success": true,
"message": {
"data": "User registered successfully",
"token": "e9cee71ab932fde863338d08be4de9dfe39ea049bdafb342ce659ec5450b69ae"
}
}
在
tests
选项卡中,从正文响应中提取令牌
并将其保存到环境变量中。
const jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("access-token", jsonData.message.token);
在 POST 调用中,Bearer 令牌类型并通过
{{variable_name}}
从环境变量中获取令牌值
{{access-token}}
另存为
server.js
const express = require('express');
const cors = require('cors');
const crypto = require('crypto');
let accessToken; // Variable to store the access token
const app = express();
app.use(cors()); // Enable CORS
// Get Token Endpoint
app.get('/api/me', (req, res) => {
// Check if Authorization header is present
if (!req.headers.authorization || req.headers.authorization.indexOf('Basic ') === -1) {
res.status(401).send('<h1>Unauthorized</h1>');
return;
}
// Extract the base64 encoded credentials
const base64Credentials = req.headers.authorization.split(' ')[1];
const credentials = Buffer.from(base64Credentials, 'base64').toString('ascii');
const [username, password] = credentials.split(':');
// Check if username and password are valid
if (username !== 'abcd' || password !== '1234') {
res.status(401).send('<h1>Unauthorized</h1>');
return;
}
// Hash the token
accessToken = crypto.createHash('sha256').update(username+password).digest('hex');
res.status(200).json({
success: true,
message: {
data: 'User registered successfully',
token: accessToken
}
});
});
// Update data API End point
app.post('/api/data', (req, res) => {
const bearerToken = req.headers.authorization;
// Check if Authorization header is present and contains Bearer token
if (!bearerToken || bearerToken.indexOf('Bearer ') === -1) {
res.status(401).json({ error: 'Unauthorized: Bearer token missing' });
return;
}
const accessTokenFromHeader = bearerToken.split('Bearer ')[1]; // Extract the Bearer token
// Check if the access token matches the expected value
if (accessTokenFromHeader !== accessToken) {
res.status(403).json({ error: 'Forbidden: Invalid access token' });
return;
}
const updatedData = {
message: "Data updated successfully",
data: "Top Secret Data"
};
res.json(updatedData); // Send the updated data in JSON format
});
// Start the server
const port = 8000;
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
npm install express cors crypto
node server.js
网址
GET {{baseUrl}}/api/me
Tests
选项卡
const jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("access-token", jsonData.message.token);
网址
POST {{baseUrl}}/api/data
与
access token