koa2实现登录注册功能的示例代码


Posted in Javascript onDecember 03, 2018

本文介绍了koa2实现登录注册功能的示例代码,分享给大家,具体如下:

这个主要结合前几天的内容,做个实际案例的效果

版本:

koa2实现登录注册功能的示例代码

项目结构:

koa2实现登录注册功能的示例代码

前几天,我们把注册和登录的页面demo实现了,今天我们主要实现这么几个内容

  • 注册新用户
  • 判断该邮箱是否注册过
  • 登录判断是否注册过
  • 登录时的密码的正确

本文代码地址:https://github.com/xiaqijian/koa2-lessons/tree/master/lesson6

明天,我们将利用session实现登录状态判断

今天的这篇是在之前的代码基础上添加的,我们就晒主要的代码

1.编辑user.js

// db/user.js
const mongoose = require('./db')
const Schema = mongoose.Schema;

const ceshiSchema = new Schema({
 email: String,
 name: String,
 password: String
});

const MyModel = mongoose.model('User', ceshiSchema);


class Userdb {
 constructor () {

 }
// 查询
 query (obj = {}) {
  return new Promise((resolve, reject) => {
  MyModel.find(obj, (err, res) => {
   if(err) {
   reject(err)
   }
   resolve(res)
  })
  })
 }
queryEmail (em) {
 return new Promise((resolve, reject) => {
  MyModel.find({email: em}, (err, res) => {
  if(err) {
   reject(err)
  }
  const len = res.length
  if(len >= 1){
   // 存在
   resolve(res)
  }else {
   // 不存在
   resolve(null)
  }
  })
 })
}
// 保存
 save (obj) {
  const m = new MyModel(obj)
  return new Promise((resolve, reject)=> {
  m.save((err, res) => {
   if (err) {
   reject(err)
   }
   resolve(res)
   console.log(res)
  })
  })
  
 }
}
module.exports = new Userdb()

上面主要查询用户,和保存用户

2.编辑 登录注册路由

// router/index.js

const Router = require('koa-router')


// 
const User = require('../db/user')
const home = new Router()

home.get('/', async (ctx) => {
 let title = '首页'
 await ctx.render('index', {
  title
 })
})


// 子路由2
const page = new Router()

page.get('/404', async (ctx) => {
 let title = "404"
 await ctx.render('err', {
  title
 })
})


const login = new Router()

login.get('/', async (ctx) => {
 let title = "登录"
 await ctx.render('login', {
  title
 })
}).post('/', async (ctx) => {
 const data = ctx.request.body
 let queryres = await User.queryEmail(data.email)
 console.log(queryres)
 if (queryres) {
  if(queryres[0].password === data.password) {
   ctx.body = {
    'code': 1,
    'data': queryres[0],
    'mesg': '登录成功'
   }
  }else {
   ctx.body = {
    'code': 0,
    'data': {},
    'mesg': '密码错误'
   }
  }
  
 }else {
  ctx.body = {
   'code': 0,
   'data': {},
   'mesg': '没有该用户,去注册吧'
  }
 }
})

const register = new Router()

register.get('/', async (ctx) => {
 let title = "注册"
 await ctx.render('register', {
  title
 })
}).post('/', async (ctx) => {
 const data = ctx.request.body
 let queryres = await User.queryEmail(data.email)
 if (queryres) {
  ctx.body = {
   'code': 0,
   'data': {},
   'mesg': '该邮箱已经存在哦'
  }
 }else {
  await User.save(data)
  ctx.body = {
   'code': 1,
   'data': {},
   'mesg': '保存成功'
  }
 }
 
})

// 装载所有子路由
let router = new Router()
router.use('/', home.routes(), home.allowedMethods())
router.use('/page', page.routes(), page.allowedMethods())
router.use('/login', login.routes(), login.allowedMethods())
router.use('/register', register.routes(), register.allowedMethods())


module.exports = router

3.编辑index.js

const Koa = require('koa')
const views = require('koa-views')
const statics = require('koa-static')
const bodyparser = require('koa-bodyparser')
const path = require('path')
const router = require('./router')
const app = new Koa()

const staticPath = './static'

app.use(statics(
 path.join(__dirname, staticPath)
))
app.use(bodyparser())

// 加载模板引擎
app.use(views(path.join(__dirname, './views'), {
 extension: 'ejs'
 }))

// 加载路由中间件
app.use(router.routes()).use(router.allowedMethods())

app.listen(3000, () => {
 console.log('localhost:3000')
})

这个和之前的内容增加了koa-bodyparser对post数据的解析,利用ctx.request.body获取

4.启动服务

node index.js

打开浏览器localhost:3000

尝试去登录注册一下,打开控制台,就可以看得到相关后台返回的数据

koa2实现登录注册功能的示例代码

koa2实现登录注册功能的示例代码

本文结束,下次文章利用session对登录状态的判断

本文代码地址:https://github.com/xiaqijian/koa2-lessons/tree/master/lesson6

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现上传图片前的预览(TX的面试题)
Aug 14 Javascript
jquery插件开发方法(初学者)
Feb 03 Javascript
jQuery的bind()方法使用详解
Jul 15 Javascript
基于JS2Image实现圣诞树代码
Dec 24 Javascript
JQuery Mobile 弹出式登录框的实现方法
May 28 Javascript
微信小程序(应用号)开发新闻客户端实例
Oct 24 Javascript
JavaScript实现的微信二维码图片生成器的示例
Oct 26 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
Vue2.0 v-for filter列表过滤功能的实现
Sep 07 Javascript
react-router 路由切换动画的实现示例
Dec 03 #Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
Dec 03 #Javascript
ng-zorro-antd 入门初体验
Dec 03 #Javascript
如何使用 vue + d3 画一棵树
Dec 03 #Javascript
Vue.js中 v-model 指令的修饰符详解
Dec 03 #Javascript
浅谈ng-zorro使用心得
Dec 03 #Javascript
JS跨域请求的问题解析
Dec 03 #Javascript
You might like
PHP_MySQL教程-第一天
2007/03/18 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
探讨各种PHP字符串函数的总结分析
2013/06/05 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
php获取Google机器人访问足迹的方法
2015/04/15 PHP
jquery实用代码片段集合
2010/08/12 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
js动态获取子复选项并设计全选及提交的实现方法
2016/06/24 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
python对DICOM图像的读取方法详解
2017/07/17 Python
tensorflow获取变量维度信息
2018/03/10 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
如何通过python实现人脸识别验证
2020/01/17 Python
python中count函数简单的实例讲解
2020/02/06 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
网吧员工管理制度
2015/08/05 职场文书
四群教育工作总结
2015/08/10 职场文书
七年级作文之我的梦想
2019/10/16 职场文书