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

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: 🍃MongoDB结合Koa2做用户登录验证

前言


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


一、MongoDB中插入文档


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


{
    userName: "admin",
    userPwd: "admin"
}
复制代码


c158fa15d51b4ff89d44980680feff37_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


二、开启一个koa2的服务


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


yarn global add koa-generator
koa2 manager-server
yarn install
yarn dev
复制代码


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


b35bb73e6ee04f58bc3eb322d1b74fb4_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.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的用法更新到博客中


5e275872004b47bb8501f2c8f34f3875_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.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
复制代码


我们来测试一下


7ffbb2e853974ee89ffb4c4ed6752f19_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


测试数据1:账号:admin 密码:aaaaa

测试数据2:账号:admin 密码:admin


3a23ebde41e64f73b074537709c25807_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png


通过日志打印我们可以看到成功实现了用户登录验证的功能,前端我们对响应进行拦截,通过判断状态码即可完成页面跳转的功能。


最后


⚽这篇文章主要介绍Koa2结合MongoDB做登录验证的功能~

⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL 安全 MongoDB
mongodb设置用户账号密码登录
今天有个同事的项目中mongodb 被黑客攻占了,然后数据库被清掉,留下了一堆“案发现场”,还整了一个段话,附上给大家伙瞧瞧。。。。
mongodb设置用户账号密码登录
|
SQL 存储 NoSQL
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
引入一套统一的新功能,以满足开发者在构建现代应用程序方面日益增长的数据需求
MongoDB 在 2022 MongoDB 全球用户大会上发布新愿景,致力成为开发者数据平台提供商
|
NoSQL MongoDB 数据库
MongoDB 用户角色管理
MongoDB 服务默认是没有账号密码的,客户端连接上即可进行各种操作。如果在配置文件中,指定了auth=true,即开启了认证,那么客户端连接后需要认证才能执行操作。
MongoDB 用户角色管理
|
JSON NoSQL Java
SpringBoot 、MongoDB和Gradle结合链接简单Demo
SpringBoot 、MongoDB和Gradle结合链接简单Demo
337 0
|
存储 NoSQL MongoDB
在MongoDB中处理"用户-角色"关系
一个简单的用户-角色-角色数据三者之间关系的MODEL设计的前后两种方式.前者用到了引用,后者用的是嵌套.象这种用户-角色的话,用嵌套更适合.毕竟一个用户的角色数据通常都不多.
771 0
|
NoSQL 关系型数据库 数据库
MongoDB非关系型数据库的简介、创建数据库和表、配置用户等
简介: MongoDB是一个高性能,开源,无模式的文档型数据库,是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,是当前NoSQL数据库产品中最热门的一种。
1094 0
|
NoSQL 数据库 数据安全/隐私保护