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 =…
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静态网站,这可能不是个问题,而对于动态网站,尤其是京东.天猫.银行等购物或金融网站,无法识别用户并保持用户状态是致命的,根本就无法提供服务. 你可以尝试将浏览器的cookie功能关闭,你会发现将无法在京东登录和购物. 为了实现连接状态的保持功能,网站会通过用户的浏览器在用户机器内被限定的硬盘位置中写…
基本框架搭建好了后,我们就要开始丰富页面内容了.最起码,得有一个用户登录的表单不是么?(注册的事情我们先放一边.) 一. 原生HTML页面 删除原来的login.html文件中的内容,写入下面的代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登录</title> </head> <…
使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Django的代码中,其实就是model类的设计. 一. 数据库模型设计 作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息.很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息: 用户名 密码 邮箱地址 性别 创建时间 进入login/models.py文件,这里将是我们整个log…
为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试. 图形验证码的历史比较悠久,到现在已经有点英雄末路的味道了.因为机器学习.图像识别的存在,机器人已经可以比较正确的识别图像内的字符了. 但不管怎么说,作为一种防御手段,至少还是可以抵挡一些低级入门的攻击手段,抬高了攻…
1.安装模块 npm install koa-passport -D npm install passport-jwt -D 2.解析token 根目录/config/passport.js const JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; const keys = require('../config/keys'); const opts…
1.登录接口 /** * @route POST api/users/login * @desc 登录接口地址 * @access 接口是公开的 */ router.post('/login', async ctx => { // 查询 const findResult = await User.find({ email: ctx.request.body.email }); const user = findResult[0]; const password = ctx.request.bod…
1.安装模块 npm install validator -D 2.验证注册参数 根目录/validation/register.js const Validator = require('validator'); const isEmpty = require('./is-empty'); module.exports = function validateRegisterInput(data) { let errors = {}; if (!Validator.isLength(data.n…
1.安装模块 npm install koa-bodyparser --save npm install bcryptjs --save 2.引入模块 根目录/app.js const bodyParser = require('koa-bodyparser'); // 实例化koa const app = new Koa(); app.use(bodyParser()); 3.注册接口 根目录/routes/api/users.js const Router = require('koa-ro…
1.创建工具类 根目录/config/tools.js const bcrypt = require('bcryptjs'); const tools = { enbcrypt(password) { var salt = bcrypt.genSaltSync(10); var hash = bcrypt.hashSync(password, salt); return hash; } }; module.exports = tools; 2.引用 根目录/routes/api/users.js…