Vì bạn không được phép lưu mật khẩu thuần túy trong cơ sở dữ liệu của mình, nên việc xác thực mật khẩu trong cơ sở dữ liệu không có ý nghĩa gì. Vì bạn nên băm mật khẩu trước rồi mới lưu lại. mật khẩu băm sẽ là một chuỗi phức tạp có nhiều khả năng sẽ vượt qua quá trình xác thực để được lưu trong cơ sở dữ liệu.
Vì vậy, bạn phải xác thực mật khẩu ở phía máy khách. đối với điều này, bạn có thể sử dụng gói joi npm.
https://www.npmjs.com/package/@hapi/joi
đây là cách bạn có thể triển khai nó.
userModel.js // phải nằm trong thư mục mô hình
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;
tôi sẽ trình bày cách sử dụng chức năng này bên trong bộ định tuyến bưu điện.
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
});