Executando verificação de segurança...
0

Para adicionar um sistema de segurança aos códigos acima, você pode usar uma chave secreta para criptografar e assinar as requisições HTTP. Isso garante que as requisições só possam ser realizadas pelo cliente autorizado.

Um exemplo de como fazer isso é usando o módulo "jsonwebtoken" do Node.js para criar e verificar tokens JWT (JSON Web Token).

Primeiro, você precisa instalar o módulo "jsonwebtoken" usando o comando "npm install jsonwebtoken":
npm install jsonwebtoken

Depois, você pode usar o módulo para criar um token JWT para cada cliente autorizado. O token deve conter um "id" do cliente e uma "chave secreta" compartilhada pelo cliente e pelo servidor. O código ficaria assim:

const jwt = require('jsonwebtoken');

const chaveSecreta = 'chave_secreta';

// Função para criar um token JWT para o cliente
const criarToken = (id) => {
  return jwt.sign({ id }, chaveSecreta, { expiresIn: '1h' });
}

// Rota para criar um token para o cliente
app.post('/login', (req, res) => {
  // Verifica as credenciais do cliente (por exemplo, usuário e senha)
  const credenciaisValidas = verificarCredenciais(req.body.usuario, req.body.senha);
  if (credenciaisValidas) {
    // Se as credenciais forem válidas, cria um token JWT para o cliente
    const token = criarToken(req.body.usuario);
    res.send({ token });
  } else {
    // Se as credenciais não forem válidas, envia um erro
    res.status(401).send('Usuário ou senha inválidos');
  }
});

Depois de criar um token para o cliente, você pode adicionar uma função de verificação de autenticação em cada rota que precisa de autenticação. A função deve verificar se o token enviado pelo cliente é válido usando a chave secreta compartilhada. O código ficaria assim:

// Função para verificar se o token é válido
const verificarToken = (req, res, next) => {
  // Verifica se o token foi enviado na requisição
  const token = req.headers['x-access-token'];
  if (!token) {
    return res.status(401).send('Token não enviado');
  }
  // Verifica se o token é válido usando a chave secreta
  jwt.verify(token, chaveSecreta, (err, decoded) => {
    if (err) {
      return res.status(401).send('Token inválido');
    }
    // Se o token for válido, adiciona o "id" do cliente na requisição
    // para uso posterior
    req.clienteId = decoded.id;
    next();
  });
}

// Adiciona a função de verificação de autenticação em todas as rotas
// que precisam de autenticação
app.post('/produtos', verificarToken, (req, res) => {
  // O código da rota fica aqui
});
app.put('/produtos/:id', verificarToken, (req, res) => {
  // O código da rota fica aqui
});
app.delete('/produtos/:id', verificarToken, (req, res) => {
 
// O código da rota fica aqui
});

Com isso, todas as rotas que precisam de autenticação passarão pelo processo de verificação de token antes de executar o código da rota. Se o token for válido, a rota será executada normalmente. Se o token for inválido ou não existir, a função enviará uma resposta de erro para o cliente.

Carregando publicação patrocinada...
2

Muito foda, não sei se preciso de tanta segurança assim, é só pra eu conseguir editar os dados na mão caso precise.

Mas salvei essa sua resposta e vou tirar um dia pra aplicar, estudar e entender esses conceitos novos, muito obrigado

0

se você estiver utilizando a vercel pode colocar o login e senha nas variaveis globais da vercel e comparar com o passado pela aplicação depois de sanatizar e pronto...

Agora você tem um super sistema NoSQL seguro e que faz o que você deseja...