🍃MongoDB结合Koa2做用户登录验证

1,551 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

前言

之前我们已经介绍了MongoDB的安装,这篇文章就来聊聊在实际项目中MongoDB如何结合Koa实现登录验证的功能, 我们会实现在MongoDB数据库中存储userNameuserPwd,然后用户登录输入账号和密码,会在数据库中查找是否用账号和密码,从而做到登录验证的功能。

一、MongoDB中插入文档

打开Robo 3T客户端,新建数据库Awu-manager,创建集合users然后插入文档:

{
    userName: "admin",
    userPwd: "admin"
}

image.png

二、开启一个koa2的服务

如果第一次使用koa,需要安装koa-generator

yarn global add koa-generator

koa2 manager-server

yarn install

yarn dev

到此你就成功启动了一个koa2的项目了,地址栏输入http://localhost:3000/ ,就可以访问到啦

image.png

三、如何连接MongoDB?

我们需要在根目录下,创建config文件夹,分别创建配置文件和数据库连接文件。

/config/index.js
/**
 * 配置文件
 */
module.exports = {
  URL: 'mongodb://127.0.0.1:27017/Awu-manager'
}
/config/db.js
/**
 * 数据库连接
 */
const mongoose = require('mongoose')
const config = require('./index')
const log4js = require('./../utils/log4j')

// 通过mongooose连接数据库
mongoose.connect(config.URL,{
  useNewUrlParser: true,
  useUnifiedTopology: true
  })
  
// 监听数据库是否连接成功
const db = mongoose.connection
db.on('error', () => {
  log4js.error('****数据库连接失败****')
})
db.on('open', () => {
  log4js.info('****数据库连接成功****')
})

到此我们就成功连接数据库了,我这里的日志监控利用log4js实现的,感兴趣的朋友可自行查阅资料,后续我也会将log4js的用法更新到博客中 image.png

koa2默认没有安装mongoose,我们需要手动安装。

yarn global mongoose -S

关于mongoose的基本使用大家可参考mongoose官方文档

四、如何在MongoDB中查数据?

定义模型

我们需要定义一个数据库的模型层,在根目录下新建models文件夹,创建userSchema.js文件,需要和数据库数据对应起来

const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
  "userId": Number, // 用户ID,自增长
  "userName": String, // 用户名称
  "userPwd": String, // 用户密码
  "userEmail": String, // 用户邮箱
  "mobile": String, // 手机号
  "sex": Number, // 性别 0:男 1:女
  "deptId": [], // 部门
  "jobs": String, // 岗位
  "state": {
    type: Number,
    default: 1
  }, // 1: 在职 2:离职 3:试用期
  "role": {
    type: Number,
    default: 1
  }, // 用户角色 0:系统管理员 1:普通用户
  "roleList" : [], // 系统角色
  "createTime": {
    type: Date,
    default: Date.now()
  }, // 创建时间
  "lastLoginTime": {
    type: Date,
    default: Date.now()
  }, // 更新时间
   remark: String // 使用remark字段方便拓展
})
// 导出定义模型,注意第三个参数要和数据库中的集合相对应。
module.exports = mongoose.model("users",userSchema,"users")

查询部分核心代码


const router = require('koa-router')()

const User = require('./../models/userSchema')

// util是封装过的工具函数
const util = require('./../utils/util')

// 添加请求前缀
router.prefix('/users')

router.post('/login', async (ctx) => {
  try {
    const { userName, userPwd } = ctx.request.body
    // 在模型中查询
    const res = await User.findOne({
      userName,
      userPwd
    })
    if (res) {
      ctx.body = util.success(res)
    } else {
      ctx.body = util.fail("账号或密码不正确")
    }
  } catch (error) {
    ctx.body = util.fail(error.msg)
  }
})

module.exports = router

我们来测试一下

image.png 测试数据1:账号:admin 密码:aaaaa
测试数据2:账号:admin 密码:admin image.png 通过日志打印我们可以看到成功实现了用户登录验证的功能,前端我们对响应进行拦截,通过判断状态码即可完成页面跳转的功能。

最后

⚽这篇文章主要介绍Koa2结合MongoDB做登录验证的功能~
⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘
🏀GitHub 博客地址: github.com/Awu1227
🏉笔者还有其他专栏,欢迎阅读~
🏐玩转CSS之美
🎱Vue从放弃到入门
🎳深入浅出JavaScript