资讯专栏INFORMATION COLUMN

koa2系列教程:koa2实现登录注册功能

baiy / 1657人阅读

摘要:系列教程,持续更新系列教程应用初见系列教程处理静态文件系列教程使用模板引擎系列教程路由控制中间件系列教程综合搭建登录注册页面系列教程实现登录注册功能这个主要结合前几天的内容,做个实际案例的效果版本项目结构前几天,我们把注册和登录的页面实现了

koa2系列教程,持续更新

koa2系列教程:koa2应用初见

koa2系列教程:koa2处理静态文件

koa2系列教程:koa2使用模板引擎

koa2系列教程:koa2路由控制中间件

koa2系列教程:综合koa2搭建登录注册页面

koa2系列教程:koa2实现登录注册功能

这个主要结合前几天的内容,做个实际案例的效果

版本:

项目结构:

前几天,我们把注册和登录的页面demo实现了,今天我们主要实现这么几个内容

注册新用户

判断该邮箱是否注册过

登录判断是否注册过

登录时的密码的正确

本文代码地址:https://github.com/xiaqijian/...

明天,我们将利用session实现登录状态判断

今天的这篇是在之前的代码基础上添加的,我们就晒主要的代码

1.编辑user.js

</>复制代码

  1. // db/user.js
  2. const mongoose = require("./db")
  3. const Schema = mongoose.Schema;
  4. const ceshiSchema = new Schema({
  5. email: String,
  6. name: String,
  7. password: String
  8. });
  9. const MyModel = mongoose.model("User", ceshiSchema);
  10. class Userdb {
  11. constructor () {
  12. }
  13. // 查询
  14. query (obj = {}) {
  15. return new Promise((resolve, reject) => {
  16. MyModel.find(obj, (err, res) => {
  17. if(err) {
  18. reject(err)
  19. }
  20. resolve(res)
  21. })
  22. })
  23. }
  24. queryEmail (em) {
  25. return new Promise((resolve, reject) => {
  26. MyModel.find({email: em}, (err, res) => {
  27. if(err) {
  28. reject(err)
  29. }
  30. const len = res.length
  31. if(len >= 1){
  32. // 存在
  33. resolve(res)
  34. }else {
  35. // 不存在
  36. resolve(null)
  37. }
  38. })
  39. })
  40. }
  41. // 保存
  42. save (obj) {
  43. const m = new MyModel(obj)
  44. return new Promise((resolve, reject)=> {
  45. m.save((err, res) => {
  46. if (err) {
  47. reject(err)
  48. }
  49. resolve(res)
  50. console.log(res)
  51. })
  52. })
  53. }
  54. }
  55. module.exports = new Userdb()

上面主要查询用户,和保存用户

2.编辑 登录注册路由

</>复制代码

  1. // router/index.js
  2. const Router = require("koa-router")
  3. //
  4. const User = require("../db/user")
  5. const home = new Router()
  6. home.get("/", async (ctx) => {
  7. let title = "首页"
  8. await ctx.render("index", {
  9. title
  10. })
  11. })
  12. // 子路由2
  13. const page = new Router()
  14. page.get("/404", async (ctx) => {
  15. let title = "404"
  16. await ctx.render("err", {
  17. title
  18. })
  19. })
  20. const login = new Router()
  21. login.get("/", async (ctx) => {
  22. let title = "登录"
  23. await ctx.render("login", {
  24. title
  25. })
  26. }).post("/", async (ctx) => {
  27. const data = ctx.request.body
  28. let queryres = await User.queryEmail(data.email)
  29. console.log(queryres)
  30. if (queryres) {
  31. if(queryres[0].password === data.password) {
  32. ctx.body = {
  33. "code": 1,
  34. "data": queryres[0],
  35. "mesg": "登录成功"
  36. }
  37. }else {
  38. ctx.body = {
  39. "code": 0,
  40. "data": {},
  41. "mesg": "密码错误"
  42. }
  43. }
  44. }else {
  45. ctx.body = {
  46. "code": 0,
  47. "data": {},
  48. "mesg": "没有该用户,去注册吧"
  49. }
  50. }
  51. })
  52. const register = new Router()
  53. register.get("/", async (ctx) => {
  54. let title = "注册"
  55. await ctx.render("register", {
  56. title
  57. })
  58. }).post("/", async (ctx) => {
  59. const data = ctx.request.body
  60. let queryres = await User.queryEmail(data.email)
  61. if (queryres) {
  62. ctx.body = {
  63. "code": 0,
  64. "data": {},
  65. "mesg": "该邮箱已经存在哦"
  66. }
  67. }else {
  68. await User.save(data)
  69. ctx.body = {
  70. "code": 1,
  71. "data": {},
  72. "mesg": "保存成功"
  73. }
  74. }
  75. })
  76. // 装载所有子路由
  77. let router = new Router()
  78. router.use("/", home.routes(), home.allowedMethods())
  79. router.use("/page", page.routes(), page.allowedMethods())
  80. router.use("/login", login.routes(), login.allowedMethods())
  81. router.use("/register", register.routes(), register.allowedMethods())
  82. module.exports = router
3.编辑index.js

</>复制代码

  1. const Koa = require("koa")
  2. const views = require("koa-views")
  3. const statics = require("koa-static")
  4. const bodyparser = require("koa-bodyparser")
  5. const path = require("path")
  6. const router = require("./router")
  7. const app = new Koa()
  8. const staticPath = "./static"
  9. app.use(statics(
  10. path.join(__dirname, staticPath)
  11. ))
  12. app.use(bodyparser())
  13. // 加载模板引擎
  14. app.use(views(path.join(__dirname, "./views"), {
  15. extension: "ejs"
  16. }))
  17. // 加载路由中间件
  18. app.use(router.routes()).use(router.allowedMethods())
  19. app.listen(3000, () => {
  20. console.log("localhost:3000")
  21. })

这个和之前的内容增加了koa-bodyparser对post数据的解析,利用ctx.request.body获取

4.启动服务

</>复制代码

  1. node index.js

打开浏览器localhost:3000

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

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

本文代码地址:https://github.com/xiaqijian/...

本文首发于:node前端

不妨关注一下

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99678.html

相关文章

  • koa2系列教程:综合koa2搭建登录注册页面

    摘要:系列教程,持续更新系列教程应用初见系列教程处理静态文件系列教程使用模板引擎系列教程路由控制中间件系列教程综合搭建登录注册页面系列教程实现登录注册功能本文源码地址这篇是将前几天的内容做个综合,运用静态文件处理,路由,模板引擎我的版本项目结构是 koa2系列教程,持续更新 koa2系列教程:koa2应用初见 koa2系列教程:koa2处理静态文件 koa2系列教程:koa2使用模板引擎 ...

    li21 评论0 收藏0
  • koa2系列教程koa2应用初见

    摘要:系列教程,持续更新系列教程应用初见系列教程处理静态文件系列教程使用模板引擎系列教程路由控制中间件系列教程综合搭建登录注册页面系列教程实现登录注册功能这篇教程主要介绍构建服务器,简单引用本教程的版本要格外注意版本号案例简单利用搭建服务器文件夹 koa2系列教程,持续更新 koa2系列教程:koa2应用初见 koa2系列教程:koa2处理静态文件 koa2系列教程:koa2使用模板引擎 ...

    import. 评论0 收藏0
  • koa2系列教程koa2处理静态文件

    摘要:系列教程,持续更新系列教程应用初见系列教程处理静态文件系列教程使用模板引擎系列教程路由控制中间件系列教程综合搭建登录注册页面系列教程实现登录注册功能这篇主要介绍处理静态文件的中间件用到的版本项目的结构大家可以往文件夹里面添加点东西编辑启动 koa2系列教程,持续更新 koa2系列教程:koa2应用初见 koa2系列教程:koa2处理静态文件 koa2系列教程:koa2使用模板引擎 k...

    madthumb 评论0 收藏0
  • koa2系列教程koa2使用模板引擎

    摘要:系列教程,持续更新系列教程应用初见系列教程处理静态文件系列教程使用模板引擎系列教程路由控制中间件系列教程综合搭建登录注册页面系列教程实现登录注册功能这篇教大家如何使用模板引擎这里我们使用模板引擎做个例子,你们自己选择自己熟练的模板引擎使用的 koa2系列教程,持续更新 koa2系列教程:koa2应用初见 koa2系列教程:koa2处理静态文件 koa2系列教程:koa2使用模板引擎 ...

    ZoomQuiet 评论0 收藏0
  • koa2系列教程koa2路由控制中间件

    摘要:系列教程,持续更新系列教程应用初见系列教程处理静态文件系列教程使用模板引擎系列教程路由控制中间件系列教程综合搭建登录注册页面这篇我们来使用一个控制一下路由本篇的版本注意版本哦目录结构编辑子路由子路由装载所有子路由加载路由中间件启动服务, koa2系列教程,持续更新 koa2系列教程:koa2应用初见 koa2系列教程:koa2处理静态文件 koa2系列教程:koa2使用模板引擎 ko...

    lily_wang 评论0 收藏0

发表评论

0条评论

baiy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<