zoukankan      html  css  js  c++  java
  • koa 项目实战(十一)验证登录和注册的 input

    1.验证注册参数

    根目录/validation/register.js

    const Validator = require('validator');
    const isEmpty = require('./is-empty');
    
    module.exports = function validateRegisterInput(data) {
      let errors = {};
    
      data.name = !isEmpty(data.name) ? data.name : '';
      data.email = !isEmpty(data.email) ? data.email : '';
      data.password = !isEmpty(data.password) ? data.password : '';
      data.password2 = !isEmpty(data.password2) ? data.password2 : '';
    
      if (!Validator.isLength(data.name, { min: 2, max: 30 })) {
        errors.name = '名字的长度不能小于2位且不能超过30位';
      }
    
      if (Validator.isEmpty(data.name)) {
        errors.name = '名字不能为空';
      }
    
      if (!Validator.isEmail(data.email)) {
        errors.email = '邮箱不合法';
      }
    
      if (Validator.isEmpty(data.email)) {
        errors.email = '邮箱不能为空';
      }
    
      if (Validator.isEmpty(data.password)) {
        errors.password = 'password不能为空';
      }
    
      if (!Validator.isLength(data.password, { min: 6, max: 30 })) {
        errors.password = 'password的长度不能小于6位且不能超过30位';
      }
    
      if (Validator.isEmpty(data.password2)) {
        errors.password2 = 'password2不能为空';
      }
    
      if (!Validator.equals(data.password, data.password2)) {
        errors.password2 = '两次密码不一致';
      }
    
      return {
        errors,
        isValid: isEmpty(errors)
      }
    }

    2.验证登录参数

    根目录/validation/login.js

    const Validator = require('validator');
    const isEmpty = require('./is-empty');
    
    module.exports = function validateLoginInput(data) {
      let errors = {};
    
      data.email = !isEmpty(data.email) ? data.email : '';
      data.password = !isEmpty(data.password) ? data.password : '';
    
      if (!Validator.isEmail(data.email)) {
        errors.email = '邮箱不合法';
      }
    
      if (Validator.isEmpty(data.email)) {
        errors.email = '邮箱不能为空';
      }
    
      if (Validator.isEmpty(data.password)) {
        errors.password = 'password不能为空';
      }
    
      if (!Validator.isLength(data.password, { min: 6, max: 30 })) {
        errors.password = 'password的长度不能小于6位且不能超过30位';
      }
    
      return {
        errors,
        isValid: isEmpty(errors)
      }
    }

    3.引用

    根目录/routes/api/users.js

    // 引入 input 验证密码
    const validateRegisterInput = require('../../validation/register');
    const validateLoginInput = require('../../validation/login');
    ...
    
    // 注册接口
    const { errors, isValid } = validateRegisterInput(ctx.request.body);
    
    // 判断是否验证通过
    if (!isValid) {
      ctx.status = 400;
      ctx.body = errors;
      return;
    }
    
    // 登录接口
    const { errors, isValid } = validateLoginInput(ctx.request.body);
    
    // 判断是否验证通过
    if (!isValid) {
      ctx.status = 400;
      ctx.body = errors;
      return;
    }

    .

  • 相关阅读:
    【BZOJ1089】[SCOI2003]严格n元树(高精度,动态规划)
    【BZOJ1083】[SCOI2005]繁忙的都市(最小生成树)
    【BZOJ1082】[SCOI2005]栅栏(搜索)
    【BZOJ1081】[SCOI2005]超级格雷码(搜索)
    【BZOJ1078】[SCOI2008]斜堆(性质题)
    【BZOJ1077】天平(差分约束)
    【BZOJ1071】[SCOI2007]组队(神仙题)
    【BZOJ1862】[ZJOI2006]游戏排名系统 (Splay)
    【BZOJ1056】[HAOI2008]排名系统(Splay)
    【BZOJ1055】[HAOI2008]玩具取名(动态规划)
  • 原文地址:https://www.cnblogs.com/crazycode2/p/11080199.html
Copyright © 2011-2022 走看看