0
votes

Erreur: code d'authentification manquant (cryptage Mongoose)

Je reçois cette erreur lors de la connexion à un utilisateur enregistré, bien sûr, j'ai eu cette erreur après avoir utilisé le package dotenv pour sécuriser ma clé de cryptage de base de données

mais proccess.env.SECRET travaille currectly

je suppose que mon problème est ici:

Error: Authentication code missing
    at Object.schema.methods.authenticateSync (C:\Users\Amir\Desktop\security\node_modules\mongoose-encryption\lib\plugins\mongoose-encryption.js:419:23)
    at model.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mongoose-encryption\lib\plugins\mongoose-encryption.js:239:47)
    at Kareem.execPreSync (C:\Users\Amir\Desktop\security\node_modules\kareem\index.js:115:16)
    at model.syncWrapper [as $__init] (C:\Users\Amir\Desktop\security\node_modules\kareem\index.js:232:12)
    at model.Document.init (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\document.js:513:8)
    at completeOne (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2853:12)
    at model.Query.Query._completeOne (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2094:7)
    at Immediate.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mongoose\lib\query.js:2138:10)
    at Immediate.<anonymous> (C:\Users\Amir\Desktop\security\node_modules\mquery\lib\utils.js:116:16)
    at processImmediate (internal/timers.js:456:21)

app.js:

require("dotenv").config();

const express = require("express");
const bodyParser = require("body-parser");
const ejs = require("ejs");
const mongoose = require("mongoose");
const encrypt = require("mongoose-encryption");

const app = express();

app.use(express.static("public"));
app.set("view engine", "ejs");
app.use(bodyParser.urlencoded({ extended: true }));

mongoose.connect("mongodb://localhost:27017/userDB", {
    useUnifiedTopology: true,
    useNewUrlParser: true,
});

const userSchema = new mongoose.Schema({
    email: String,
    password: String,
});

                                         //_
//     encrypting password field         // | 
userSchema.plugin(encrypt, {             // | i guess problem is here
    secret: process.env.SECRET,          // |
    encryptedFields: ["password"],       //_|
});

const User = mongoose.model("User", userSchema);

Erreur :

userSchema.plugin(encrypt, {           
    secret: process.env.SECRET,         
    encryptedFields: ["password"],     
});


0 commentaires

6 Réponses :


1
votes

Vous devez supprimer les documents existants dans votre base de données et réexécuter le code avec un document vide.


0 commentaires

3
votes

J'ai eu le même problème et cela a fonctionné pour moi:

  1. Accédez à votre base de données en utilisant votre terminal en utilisant (autant que je peux voir que vous utilisez mongo) ex: show dbs , use databaseName , show collections , db.databaseName.find() puis

  2. Videz votre base de données db.databaseName.drop() (si c'est important, gardez-le dans un endroit sûr pour pouvoir le réutiliser à nouveau, cela devrait être facile si vous utilisez Postman)

  3. Et recréez votre base de données


0 commentaires

1
votes

En fait, le fait est que vous utilisez peut-être votre nouveau cryptage sur des données qui ont été stockées avant l'ajout du cryptage, alors que si vous vérifiez la même chose avec les nouvelles données, cela fonctionnera correctement, vous devez donc d'abord créer une nouvelle base de données afin que vous ajoutez-y de nouveaux éléments, et nous espérons que cela fonctionnera pour vous. :)


0 commentaires

1
votes

Eh bien, j'étais confronté au même problème, mais cela ne concerne que les données que vous avez précédemment stockées dans la base de données en utilisant le cryptage mongoose sans dotenv. Cependant, cela fonctionne bien

  1. lorsque vous créez de nouvelles données en vous inscrivant en tant que nouvel utilisateur.
  2. Supprimez la base de données et créez-en une nouvelle. (Assurez-vous de sauvegarder les données avant de le faire). :)

0 commentaires

-1
votes

Le port 27017 du serveur MongoDB n'est pas actif sur votre système. Pour ce faire, écrivez simplement la commande "mongod" dans un autre onglet de votre hyper terminal.


0 commentaires

0
votes

La raison en est que vous avez peut-être changé la "clé de cryptage". Si vous pouvez trouver celle que vous avez créée au début, vous pouvez toujours vérifier et utiliser cette base de données dans votre fichier (.js). Cependant, "Erreur: code d'authentification manquant (cryptage Mongoose)" ne signifie pas que vous le détruisez. Vous pouvez toujours utiliser. Essaye!


0 commentaires