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 相关文章推荐
javascript中this做事件参数相关问题解答
Mar 17 Javascript
修复bash漏洞的shell脚本分享
Dec 31 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
JS实现方向键切换输入框焦点的方法
Aug 19 Javascript
js删除局部变量的实现方法
Jun 25 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
easyui tree带checkbox实现单选的简单实例
Nov 07 Javascript
JS去除字符串中空格的方法
Feb 14 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
Aug 08 Javascript
layer实现弹出层自动调节位置
Sep 05 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 jQuery
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数组的使用方法小结
2010/09/23 PHP
PHP sprintf() 函数的应用(定义和用法)
2012/06/29 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
javascript 解析url的search方法
2010/02/09 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
javascript实现滑动解锁功能
2014/12/31 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
小程序转发探索示例
2019/02/19 Javascript
python 数据加密代码
2008/12/24 Python
python访问纯真IP数据库的代码
2011/05/19 Python
python创建和使用字典实例详解
2013/11/01 Python
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
python调用百度语音识别api
2018/08/30 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
python 操作excel表格的方法
2020/12/05 Python
详解python中的三种命令行模块(sys.argv,argparse,click)
2020/12/15 Python
python excel和yaml文件的读取封装
2021/01/12 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
中国最大的团购网站:聚划算
2016/09/21 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
导游实习生自荐书
2014/01/28 职场文书
《池塘边的叫声》教学反思
2014/04/12 职场文书
学校花圃的标语
2014/06/18 职场文书
房屋租赁协议书
2014/10/18 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书