最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 22:03:09
文档

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

koa2实现登录注册功能的示例代码:本文介绍了koa2实现登录注册功能的示例代码,分享给大家,具体如下: 这个主要结合前几天的内容,做个实际案例的效果 版本: 项目结构: 前几天,我们把注册和登录的页面demo实现了,今天我们主要实现这么几个内容 注册新用户 判断该邮箱是否注册过 登录判
推荐度:
导读koa2实现登录注册功能的示例代码:本文介绍了koa2实现登录注册功能的示例代码,分享给大家,具体如下: 这个主要结合前几天的内容,做个实际案例的效果 版本: 项目结构: 前几天,我们把注册和登录的页面demo实现了,今天我们主要实现这么几个内容 注册新用户 判断该邮箱是否注册过 登录判


本文介绍了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

    文档

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

    koa2实现登录注册功能的示例代码:本文介绍了koa2实现登录注册功能的示例代码,分享给大家,具体如下: 这个主要结合前几天的内容,做个实际案例的效果 版本: 项目结构: 前几天,我们把注册和登录的页面demo实现了,今天我们主要实现这么几个内容 注册新用户 判断该邮箱是否注册过 登录判
    推荐度:
    标签: 注册 功能 用户
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top