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

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

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

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

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

(0)

相关推荐

  • vue2.0+koa2+mongodb实现注册登录

    前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道怎么进,却不知道里面是怎么出的,这就是局限性." 醍醐灌顶般,刚好学习vue的时候看到有个注册登录的项目,索性我也跟着动手做一个vue项目,引入koa和mongodb,实现客户端(client)提交-服务端(server)接收返回-入数据库全过程. 本项目基于vue-cli搭建,利用token方式进

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

    本文介绍了koa2实现登录注册功能的示例代码,分享给大家,具体如下: 这个主要结合前几天的内容,做个实际案例的效果 版本: 项目结构: 前几天,我们把注册和登录的页面demo实现了,今天我们主要实现这么几个内容 注册新用户 判断该邮箱是否注册过 登录判断是否注册过 登录时的密码的正确 本文代码地址:https://github.com/xiaqijian/koa2-lessons/tree/master/lesson6 明天,我们将利用session实现登录状态判断 今天的这篇是在之前的代码基础

  • 基于Java实现QQ登录注册功能的示例代码

    目录 前言 实现代码 登录页面 注册页面 效果展示 前言 本文主要应用的技术有:GUI.JDBC.多线程 实现的功能具体如下: 1.登录功能 2.注册功能 3.是否隐藏密码的选择以及实现功能 4.选择性别功能 5.密码与确认密码功能 6.登录页面实时展示当前的时间 7.当登录时用户名与密码在数据库中没有相匹配的数据,则会跳转到注册页面上去. 8.同样,注册完毕后,数据会运用JDBC将数据写入数据库中,然后跳转回登录页面. 实现代码 登录页面 import javax.swing.*; impor

  • vue实现登录注册模板的示例代码

    模板1: login.vue <template> <p class="login"> <el-tabs v-model="activeName" @tab-click="handleClick"> <el-tab-pane label="登录" name="first"> <el-form :model="ruleForm" :ru

  • django的登录注册系统的示例代码

    摘要 django框架本身自带有登录注册,也可以自己写登录注册,下面将介绍这这2种方式实登录注册 一.自己写登录注册登出 1.注册regist 注册采用的是form表单,提交到数据库,在登录的时候,查询数据看,看用户有没有注册,如果用户没有注册,则返回注册页面注册 (1)models.py文件里创建相关的字段: 用户名字/用户密码/cookies携带的ticket from django.db import models # Create your models here. class User

  • django与小程序实现登录验证功能的示例代码

    之前用小程序做项目,因为后台使用的java开发,一切顺利,但切换成django做RESTful API接口时,在登陆注册时一直出现问题,网上搜索,借助一个网友的回答,找到了一种可行的解决方案,现记录如下. 具体流程 用户点击小程序页面上的登录授权认证 通过微信自带的认证获取code 调取登录接口,将code传入后台 后台拿到code调用微信接口获取openid等用户信息 后台将openid作为用户名,若存在则去校验用户信息,否则以此用户名创建新用户,密码随机生成 将校验结果或者创建信息返回给微信

  • Android登录注册功能 数据库SQLite验证

    本文实例为大家分享了Android登录注册功能的具体代码,供大家参考,具体内容如下 展示效果 代码区 MainActivity(登录方法) public class MainActivity extends AppCompatActivity { @BindView(R.id.editText) EditText editText; @BindView(R.id.editText2) EditText editText2; @BindView(R.id.button) Button button

  • Python函数式编程实现登录注册功能

    本文实例为大家分享了Python函数式编程实现登录注册功能的具体代码,供大家参考,具体内容如下 代码: def login(username, password):     """     用于用户登录     :param username:用户输入的用户名      :param password: 用户输入的密码     :return: true表示登录成功,false登录失败     """     # 打开文件     f = ope

  • Android实现登录注册功能

    本文实例为大家分享了Android实现登录注册功能的具体代码,供大家参考,具体内容如下 运行环境 Android Studio 总体效果图 一. 设计注册页面的布局 二.完成注册功能 (1) 添加User类 (2)添加 UserManager类 管理用户信息 package com.example.videoplayer; import android.hardware.usb.UsbRequest; import java.io.BufferedReader; import java.io.F

  • Node.js实现登录注册功能

    本文实例为大家分享了Node.js实现登录注册功能的具体代码,供大家参考,具体内容如下 目录结构 注册页面: reg.html <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial

  • 基于Spring5实现登录注册功能

    本文实例为大家分享了Spring5实现登录注册功能的具体代码,供大家参考,具体内容如下 准备: 根据分析用户注册登录都需要的信息为①username(String)②userid(Int)③userpassword(String)④useremail(String) 1.生成数据库.表 2.编写实体类 import org.springframework.stereotype.Component; @Component public class User {     private String

随机推荐