sql >> データベース >  >> NoSQL >> MongoDB

パスワードのマングースカスタム検証

    プレーンパスワードをデータベースに保存することは想定されていないため、データベースでパスワードを検証することは意味がありません。最初にパスワードをハッシュしてから保存する必要があるためです。ハッシュ化されたパスワードは、データベースに保存される検証に合格する可能性が最も高い複雑な文字列になります。

    したがって、クライアント側でパスワードを検証する必要があります。このために、joinpmパッケージを使用できます。

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

    これがあなたがそれを実装する方法です。

    userModel.js//モデルフォルダにある必要があります

     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;
    

    ポストルーター内でこの機能を使用する方法を示します。

    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. SpringDataMongoでのObjectIdの問題を使用したファセット+集計クエリ

    2. マングース:Coffeescriptの再帰的な埋め込みドキュメント

    3. hSetキーでTTLを再設定します

    4. ClusterControlの使用を開始する方法