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');

    }
     
    添加用户完成
  • 相关阅读:
    点击两次返回键程序退出
    权限android.permission.WRITE_EXTERNAL_STORAGE 内外置sd卡写权限
    java Calendar add方法
    MeasureSpec简介
    android bitmap转换
    IOS键盘隐藏和显示调用
    内存溢出
    UIView递归
    caLayer
    C++算法
  • 原文地址:https://www.cnblogs.com/ericblog1992/p/13099891.html
Copyright © 2011-2022 走看看