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;
}

.

koa 项目实战(十一)验证登录和注册的 input的更多相关文章

  1. Django实战(一)-----用户登录与注册系统6(session会话、注册视图)

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于 ...

  2. Django实战(一)-----用户登录与注册系统3(前端页面、登录视图)

    基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: ...

  3. Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)

    使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Djang ...

  4. Django实战(一)-----用户登录与注册系统5(图片验证码)

    为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛 ...

  5. koa 项目实战(九)passport验证token

    1.安装模块 npm install koa-passport -D npm install passport-jwt -D 2.解析token 根目录/config/passport.js cons ...

  6. koa 项目实战(七)登录接口

    1.登录接口 /** * @route POST api/users/login * @desc 登录接口地址 * @access 接口是公开的 */ router.post('/login', as ...

  7. koa 项目实战(十)使用 validator 验证表单

    1.安装模块 npm install validator -D 2.验证注册参数 根目录/validation/register.js const Validator = require('valid ...

  8. koa 项目实战(四)注册接口和调试工具(postman)

    1.安装模块 npm install koa-bodyparser --save npm install bcryptjs --save 2.引入模块 根目录/app.js const bodyPar ...

  9. koa 项目实战(六)注册接口加密

    1.创建工具类 根目录/config/tools.js const bcrypt = require('bcryptjs'); const tools = { enbcrypt(password) { ...

随机推荐

  1. Outline 科学的上网

    outline 官网:https://getoutline.org/zh-CN/home 下载 Outline 管理器 下载 Outline 客户端 配置浏览器代理

  2. ONNX预训练模型加载

    tvm官网中,对从ONNX预训练模型中加载模型的教程说明 教程来自于:https://docs.tvm.ai/tutorials/frontend/from_onnx.html#sphx-glr-tu ...

  3. QT版本下载链接

    http://download.qt.io/archive/qt/

  4. Delphi VCL类结构

  5. web开发:形变、表格及多行文本操作

    一.2d形变 二.动画 三.表格 四.多个文本垂直居中 五.小米形变案例 一.2d形变 /*1.形变参考点: 三轴交界点*/transform-origin: x轴坐标 y轴坐标; /*2.旋转 ro ...

  6. python函数大全

    1.range函数 可创建一个整数列表,用于for循环中 格式为:range(start,stop[,step]) start:计数从start开始,默认从0开始 stop:计数从stop结束,但不包 ...

  7. CSS 中用户自定义字体 @font-face

    @font-face 允许网页中使用自定义的字体,这些自定义的字体被放置在服务器上,从而让网页摆脱对访问者计算机上字体环境的依赖. 简单的说,有了@font-face,只需将字体上传到服务器端,无论访 ...

  8. 关于从入 OI 以来学的各种知识点的系统总结

    前言 OI 之路差不多快结束了,最近水平也萎得很厉害,这里就开个目录,记录一些需要总结的知识点吧.不定期更,勿催,我还要改模拟赛的题. 目录

  9. centos6 mini安装图形界面,并vnc远程控制

    1.安装图形界面sudo yum groupinstall basic-desktop desktop-platform x11 fonts 2.安装vnc服务sudo yum -y install ...

  10. 埋点(Event Tracking)vs 无埋点(Codeless Tracking) vs 可视化埋点(Visual Event Tracking)

    在理解什么是埋点之前,首先需要了解一些基础知识:(以下摘自:http://www.chinawebanalytics.cn/auto-event-tracking-good-bad-ugly/) 我们 ...