sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongoose brugerdefineret validering for adgangskode

Da du ikke skal gemme almindelig adgangskode i din database, giver det ikke mening at validere adgangskoden i databasen. Fordi du skal hash kodeordet først og derefter gemme det. hashed adgangskode vil være en kompleks streng, der højst sandsynligt vil bestå valideringen for at blive gemt i databasen.

Så du skal validere adgangskoden på klientsiden. til dette kan du bruge joi npm-pakken.

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

sådan kan du implementere det.

userModel.js //skal være i mappen models

 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;

Jeg vil demonstrere, hvordan man bruger denne funktion inde i en post-router.

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. Hvordan tilføjer man automatisk stigning til eksisterende samling i mongodb/node.js?

  2. MongoDB fungerer ikke med PHP på WAMP

  3. Nodejs + Mongo db forbinder med serverdatabase med brugernavn og adgangskode

  4. MongoDB C#-driver:Ignorer egenskab ved indsæt