sql >> Database >  >> NoSQL >> MongoDB

Mongoose aangepaste validatie voor wachtwoord

Aangezien het niet de bedoeling is dat u een gewoon wachtwoord in uw database opslaat, heeft het geen zin om het wachtwoord in de database te valideren. Omdat u het wachtwoord eerst moet hashen en vervolgens moet opslaan. gehashte wachtwoord zal een complexe string zijn die hoogstwaarschijnlijk de validatie doorstaat om in de database te worden opgeslagen.

U moet het wachtwoord dus aan de clientzijde valideren. hiervoor kunt u het joi npm-pakket gebruiken.

https://www.npmjs.com/package/@hapi/joi

dit is hoe je het kunt implementeren.

userModel.js //moet in de map Modellen staan

 const Joi = require('@hapi/joi');
 const mongoose = require("mongoose");

 //you defined your schema above, it should be **lowercase** 
 //here is the model, model should start capital letter 
 const User=mongoose.model("User",userSchema)

function validateUser(user) {
  const schema = Joi.object().keys({
    email: Joi.string()
      .min(8)
      .max(50)
      .required()
      .email(),
    password: Joi.string()
      .min(6)
      .required()
      .max(20)
      .regex(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).{8,1024}$/) //special/number/capital
  });
  return Joi.validate(user, schema);
}

module.exports.User = User;
module.exports.validate = validateUser;

ik zal demonstreren hoe deze functie te gebruiken in een postrouter.

userRoute.js

//import model and validate func
const { User, validate } = require("/models/user"); 

router.post("/", async (req, res) => {
  //validating the request here
  const { error } = validate(req.body);
  if (error) res.status(400).send(error.details[0].message);

  //i used this code to show you how to use validate function
  //i am not sure what is your project about
  });


  1. Gebruik wait.for met nodejs en mongoskin om callback hell te voorkomen

  2. Redis-implementatieconfiguratie - master-slave-replicatie

  3. mongo kopiëren van de ene collectie naar de andere (op dezelfde db)

  4. Kan mongodb-doctrine niet installeren in symfony2 met componist