1 文件结构:pages中放置页面代码;server 分为 dbs 和interface两个文件夹;

dbs设置有关数据库的代码;interface设置接口信息;

2.2 先看dbs的,在dbs的配置文件config.js中定义:

export default {                  //该文件是配置文件,在 server/index 和interface 中引入使用。
dbs:'mongodb://127.0.0.1:27017/student',//配置数据库host和数据库名字student
redis:{ //配置redis快速存储的数据库地址和端口
get host(){
return '127.0.0.1'
},
get port(){
return 6379
}
},
smtp:{ //配置发送邮箱的信息
get host(){
return 'smtp.qq.com' //smtp发送邮件的协议
},
get user(){
return '2751581738@qq.com' //邮箱地址
},
get pass(){
return 'XXXXXXXX' //授权码
},
get code(){ //发送的四位随机码
return ()=>{
return Math.random().toString(16).slice(2,6).toUpperCase()
}
},
get expire(){
return ()=>{ //设置验证码的设置有效期
return new Date().getTime()+60*60*1000
}
}
}
}

然后在数据库的dbs中model中新建数据表:

import mongoose from 'mongoose' //使用 mongoose 新建数据库的表 users
const Schema = mongoose.Schema
const UserSchema=new Schema({
username:{
type:String,
unique:true,
require:true
},
password:{
type:String,
require:true
},
email:{
type:String,
require:true
}
}) export default mongoose.model('User',UserSchema)

还要在server/index.js中

import mongoose from 'mongoose'
mongoose.connect(dbConfig.dbs,{
useNewUrlParser:true
})

处理完数据库之后,再来设置接口,在interface文件夹中:

首先在interface/utils文件夹下新建 axios和passport两个文件, 然后设置 passport文件:

passport获取用户在调用登陆接口时,输入的用户名和密码,然后在数据库中根据用户名判断密码是否正确;并且在用户执行login()时,序列化用户名,待

详见:  koa2 使用passport权限认证中间件

Koa集成权限认证中间件之Passport

koa-passport学习笔记

最后,我们需要在app中开启koa-passport对session的支持

app.use(passport.initialize())
app.use(passport.session())

app.use(passport.initialize()) 会在请求周期ctx对象挂载以下方法与属性

  • ctx.state.user 认证用户
  • ctx.login(user) 登录用户(序列化用户)
  • ctx.isAuthenticated() 判断是否认证

passport.session()则是passport自带的策略,用于从session中提取用户信息

vue全家桶+Koa2开发笔记(7)--登陆注册功能的更多相关文章

  1. vue全家桶+Koa2开发笔记(6)--app开发

    1.环境配置 详见文章<Nuxt 开发 - 项目初始化> 1.1  使用nuxt脚手架  https://zh.nuxtjs.org/guide/installation 1.2 在nod ...

  2. vue全家桶+Koa2开发笔记(5)--nuxt

    1. nuxt项目初始化报错 下面是使用 koa 模板方法初始化一个项目,使用该方法需要将 nuxt 的版本降至1.4.2: 官方 https://zh.nuxtjs.org/guide/instal ...

  3. vue全家桶+Koa2开发笔记(2)--koa2

    1. 安装koa脚手架的时候 执行命令 koa2 -e koa-learn 注意要使用-e的方式,才会生成ejs的模板 2. async await的使用方法:存在的意义:提高promise的可读性 ...

  4. vue全家桶+Koa2开发笔记(8)--开发网页

    1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...

  5. vue全家桶+Koa2开发笔记(1)--vuex

    1.  安装webpack的问题: webpack坑系列--安装webpack-cli 2.  vue-cli(vue脚手架)超详细教程 3.  在命令行中使用 touch 执行新建文件: 4.  关 ...

  6. vue全家桶+Koa2开发笔记(4)--redis

    redis用来在服务器端存放session 1 安装redis    brew install redis 启动redis   redis-server 2 安装两个中间件  npm i koa-ge ...

  7. vue全家桶+Koa2开发笔记(3)--mongodb

    1. 安装 momgodb brew install mongodb安装成功后执行 which mongod启动:mongod 2. 下载可视化操作数据库的软件 https://robomongo.o ...

  8. Vue 全家桶 + Electron 开发的一个跨三端的应用

    代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...

  9. [在线+源码]vue全家桶+Typescript开发一款习惯养成APP

    # vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp. [源码地址](https://github.com/xiaomuzhu/vue ...

随机推荐

  1. day12-python的类

    类的一般形式: 创建类我们一般用class关键字来创建一个类,class后面跟类名字,可以自定义,最后以冒号结尾,如下所示: class ClassName: '''类的说明''' 类的内容 类的内容 ...

  2. Oracle 12c Sharding测试过程中的问题解决

    Sharding测试过程中的问题解决 1. 环境部署 软件的版本需要12.2.0.0.3及以上的版本 在配置GSM的时候报错信息不会很直观的展示出来,这对于安装部署有很大阻碍. 2. 数据导入 Dup ...

  3. [Leetcode 100]判断二叉树相同 Same Tree

    [题目] 判断二叉树是否相同. [思路] check函数. p==null并且q==null,返回true;(两边完全匹配) p==null或q==null,返回false;(p.q其中一方更短) p ...

  4. css文件 如何使背景图片大小适应div的大小

    对背景图片设置属性:background-size:cover;可以实现背景图片适应div的大小. background-size有3个属性: auto:当使用该属性的时候,背景图片将保持100% 的 ...

  5. SQL-22 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no、部门名称dept_name以及次数sum

    题目描述 统计各个部门对应员工涨幅的次数总和,给出部门编码dept_no.部门名称dept_name以及次数sumCREATE TABLE `departments` (`dept_no` char( ...

  6. box-shadow 边框阴影

    box-shadow: 0 0 20px #000 inset;

  7. 数据分析常用的python工具和SQL语句

    select symbol, "price.*" from stocks :使用正则表达式来指定列查询 select count(*), avg(salary) from empl ...

  8. nginx保持会话的方式

    1)ip_hash 简单易用,但是有如下缺点 后端服务器宕机后,session会丢失 来自同一局域网的客户端会被转发到同一个后端服务器,可能导致负载失衡 不适用CDN网络,不适用于前段还有代理的情况 ...

  9. Delphi和OutputDebugString

    曾经想要实时监控您的Delphi应用程序,并能够查看日志消息吗?当然,您始终可以在RAD Studio IDE中以完全调试模式运行.另一种方法是输出日志消息,例如输出到文本文件.您还可以使用Outpu ...

  10. Python 通过队列实现一个生产者消费者模型

    import time from multiprocessing import Process,Queue #生产者 def producer(q): for i in range(10): time ...