Как я могу сделать одноразовый маршрут, используя Express (node.js)? - PullRequest
2 голосов
/ 29 апреля 2020

Я пытался сделать это со случайно сгенерированной строкой, но маршрут не был создан.

1 Ответ

0 голосов
/ 29 апреля 2020

Фрагмент ниже дает представление о том, как его можно реализовать с помощью временного токена. В основном вам нужно использовать параметр пути в качестве токена, проверить, существует ли этот токен, а затем удалить его после первого использования. Вы можете проверить этот код с помощью: http://localhost: 3000 / временная ссылка / d5407341-3a54-4e30-acf1-09d2174b3e23 После повторного нажатия он не будет работать.

var express = require('express');

var app = express();

app.use(express.json());
app.use(express.urlencoded({ extended: false }));

//get from database or something like it
const allowedUUIDs = ['d5407341-3a54-4e30-acf1-09d2174b3e23',
              '7811c8bf-ddf7-4439-a193-93dca12a0656',  
              'cef82390-9c0a-43e9-93e8-1a80aa5eced5',
              '86520485-9d09-48ba-b65c-9bab0ff2e3a2'
            ];

//test your UUID (access token)
function checkSingleAccess(requestUUID) {
  const index = allowedUUIDs.indexOf(requestUUID);
  const UUIDExists = index > -1;

  if(UUIDExists){
    //remove from array, or your database
    allowedUUIDs.splice(index, 1);
  }

  console.log(UUIDExists);

  return UUIDExists;
}

//set a path parameter with :uuid
app.use('/temporary-link/:uuid', function(req, res, next) {
  //get your path parameter
  const requestUUID = req.params.uuid;

  //test if allowed
  if(checkSingleAccess(requestUUID)){
    res.send(`UUID ${requestUUID} allowed` );
  }else{
    //if not build an error
    const errorResponse = `UUID ${requestUUID} not allowed`;
    res.status(403, errorResponse);
    res.send(errorResponse);
  }
});

module.exports = app;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...