zoukankan      html  css  js  c++  java
  • 博客项目实战5

    添加字段验证

    //引入 joi 模块
    const Joi = require('joi');
    module.exports = async(req, res) => {

        // 定义规则对象
        const schema = {
            username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合规则...')),
            email: Joi.string().email().required().error(new Error('邮箱格式不符合要求...')),
            password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}/).required().error(new Error('密码格式不符合要求...')),
            role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
            state: Joi.number().valid(0, 1).required().error(new Error('状态值非法...'))
        };

        try {
            // 实施验证
            await Joi.validate(req.body, schema);
        } catch (e) {
            //  验证没有通过 
            res.redirect(`/admin/user-edit?message=${e.message}`);

        }

        res.send(req.body);
    }
     

    //引入 joi 模块
    const Joi = require('joi');
    // 引入用户集合的构造函数
    const { User } = require('../../model/user');
    // 引入加密模块
    const bcrypt = require('bcrypt');
    module.exports = async(req, res) => {

        // 定义规则对象
        const schema = {
            username: Joi.string().min(2).max(12).required().error(new Error('用户名不符合规则...')),
            email: Joi.string().email().required().error(new Error('邮箱格式不符合要求...')),
            password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}/).required().error(new Error('密码格式不符合要求...')),
            role: Joi.string().valid('normal', 'admin').required().error(new Error('角色值非法')),
            state: Joi.number().valid(0, 1).required().error(new Error('状态值非法...'))
        };

        try {
            // 实施验证
            await Joi.validate(req.body, schema);
        } catch (e) {
            //  验证没有通过 
            return res.redirect(`/admin/user-edit?message=${e.message}`);
        }

        // 根据邮箱地址查询用户是否存在
        let user = await User.findOne({ email: req.body.email });
        // 如果存在 
        if (user) {
            return res.redirect(`/admin/user-edit?message=邮箱地址被占用...`);
        }

        // 对密码进行加密处理   生成随机字符串  bcrypt
        const salt = await bcrypt.genSalt(10);
        // 加密
        const password = await bcrypt.hash(req.body.password, salt);
        // 替换密码
        req.body.password = password;
        // 将用户信息添加到数据库中
        await User.create(req.body);
        res.redirect('/admin/user');

    }
     
    添加用户完成
  • 相关阅读:
    Linux配置Nginx负载均衡
    linux虚拟机ping不通主机和外网(包括刚装系统遇到的一些问题)
    MySQL的主从复制
    ubuntu下安装php
    ubuntu下sudo apt-get update Sources 404 Not Found 解决方法
    java 中类的加载顺序
    PHP生成各种验证码和Ajax验证
    PHP算法之二分查找和顺序查找
    ThinkPHP中SQL调试方法
    mysql 处理中文乱码问题
  • 原文地址:https://www.cnblogs.com/ericblog1992/p/13099891.html
Copyright © 2011-2022 走看看