邮差里哪里可以找到token?

问题描述 投票:0回答:1

我正在为邮递员的一个想法而苦苦挣扎(我第一次使用它)。我看了一个课程,其中那个人展示了邮递员中的令牌可以在哪里找到,我们应该使用它。不幸的是我找不到它应该在的地方

我有这个程序的免费版本,但这应该不是问题。我正在研究活跃环境

授权选项卡:

标题

身体

get postman token
1个回答
0
投票

概述

Postman
:想要作为客户端获取token并更新数据

Server
:提供令牌和更新数据

代币API:

GET http://localhost:8000/api/me

需要

username/password

更新数据API:

POST http://localhost:8000/api/data

需要

access token

Postman 的 API 调用如何工作

#1 用户基本授权

#2 获取Token API调用

#3 响应获取令牌调用

#4 将

access-token
保存到环境变量中

#5 使用

access token

更新数据 API 调用

Token在哪里

来自 GET 访问令牌 API 这是响应的正文 “message.token”是 JSON 中的访问令牌示例

{
    "success": true,
    "message": {
        "data": "User registered successfully",
        "token": "e9cee71ab932fde863338d08be4de9dfe39ea049bdafb342ce659ec5450b69ae"
    }
}

如何解析/保存Token

tests
选项卡中,从正文响应中提取令牌 并将其保存到环境变量中。

const jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("access-token", jsonData.message.token);

如何使用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

结果

© www.soinside.com 2019 - 2024. All rights reserved.