sql >> Databáze >  >> NoSQL >> MongoDB

Vlastní ověření hesla Mongoose

Protože se nepředpokládá, že byste do databáze ukládali prosté heslo, nemá smysl heslo v databázi ověřovat. Protože byste měli heslo nejprve hashovat a poté uložit. hash password bude složitý řetězec, který s největší pravděpodobností projde ověřením a uloží se do databáze.

Musíte tedy ověřit heslo na straně klienta. k tomu můžete použít balíček joi npm.

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

takto to můžete implementovat.

userModel.js // by měl být ve složce modelů

 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;

Ukážu, jak používat tuto funkci uvnitř poštovního routeru.

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. Dávkové vložení MongoDB nefunguje s ovladačem java

  2. Django Redis Chyba neznámého příkazu 'BZPOPMIN'

  3. Extrahujte Decimal z Decimal128 pomocí Mongoose - MongoDB

  4. Nativní maskování MongoDB (3. metoda)