vue全家桶+Koa2开发笔记(7)--登陆注册功能
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()时,序列化用户名,待
最后,我们需要在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)--登陆注册功能的更多相关文章
- vue全家桶+Koa2开发笔记(6)--app开发
1.环境配置 详见文章<Nuxt 开发 - 项目初始化> 1.1 使用nuxt脚手架 https://zh.nuxtjs.org/guide/installation 1.2 在nod ...
- vue全家桶+Koa2开发笔记(5)--nuxt
1. nuxt项目初始化报错 下面是使用 koa 模板方法初始化一个项目,使用该方法需要将 nuxt 的版本降至1.4.2: 官方 https://zh.nuxtjs.org/guide/instal ...
- vue全家桶+Koa2开发笔记(2)--koa2
1. 安装koa脚手架的时候 执行命令 koa2 -e koa-learn 注意要使用-e的方式,才会生成ejs的模板 2. async await的使用方法:存在的意义:提高promise的可读性 ...
- vue全家桶+Koa2开发笔记(8)--开发网页
1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...
- vue全家桶+Koa2开发笔记(1)--vuex
1. 安装webpack的问题: webpack坑系列--安装webpack-cli 2. vue-cli(vue脚手架)超详细教程 3. 在命令行中使用 touch 执行新建文件: 4. 关 ...
- vue全家桶+Koa2开发笔记(4)--redis
redis用来在服务器端存放session 1 安装redis brew install redis 启动redis redis-server 2 安装两个中间件 npm i koa-ge ...
- vue全家桶+Koa2开发笔记(3)--mongodb
1. 安装 momgodb brew install mongodb安装成功后执行 which mongod启动:mongod 2. 下载可视化操作数据库的软件 https://robomongo.o ...
- Vue 全家桶 + Electron 开发的一个跨三端的应用
代码地址如下:http://www.demodashi.com/demo/11738.html GitHub Repo:vue-objccn Follow: halfrost · GitHub 利用 ...
- [在线+源码]vue全家桶+Typescript开发一款习惯养成APP
# vue-ts-daily 基于Vue.js的2.5.13版本和TypeScript编写的模仿原生应用的WebApp. [源码地址](https://github.com/xiaomuzhu/vue ...
随机推荐
- python select poll epoll的区别
select 优点:为最早的异步io处理模块,他可以再linux上和windows上使用,跨平台兼容性好,而poll和epoll都不能在windows系统环境中使用. 缺点:select的机制决定了他 ...
- 每天CSS学习之caption-side
caption-side是CSS2的属性,其作用是规定标题的位置在表格的上面还是下面. 1.top:默认值,将表格标题定位在表格之上.如下例子: caption{ caption-side:top; ...
- 第一篇 入门必备 (Android学习笔记)
第一篇 入门必备 第1章 初识Android 第2章 搭建你的开发环境 第3章 创建第一个程序--HelloWorld 第4章 使用Android工具 ●Android之父 Android安迪·罗 ...
- 2.8 C++参数初始化表
参考:http://www.weixueyuan.net/view/6340.html 总结: 参数初始化表可以为任何数据成员进行初始化. 初始化const成员变量的唯一方法只有利用参数初始化表. 通 ...
- mybatis 异常 There is no getter for property named 'bizId' in 'class java.lang.Long'
mybatis 异常 There is no getter for property named 'bizId' in 'class java.lang.Long' 当使用mybatis进行传参的时候 ...
- netty pipeline.addLast
pipeline有一个主要的实现类 DefaultChannelPipeline ,addLast顾名思义,就是在处理器链的最后添加一个channelHandler. 代码如下:@Override ...
- 关于 数据库 my_slq的 安装及其卸载
安装的时候 注意事项 自定后 根据电脑的系统版本 选择32 或者64 然后选择→方向键 密码默认是123456 或者 123123 查看装的数据库是否安装好了 如何完全卸载 mysql 数据库 ...
- LibHaru编译使用
最近公司准备在PDF方面发力了,我也要行动起来,就找到了LibHaru这个开源库 编译Libharu需要用到zlib库和libpng库,libpng库又依赖zlib库. zlib 下载地址:http: ...
- wiki----为用户设置管理员权限
wiki页面的管理员权限设置方法: wiki的页面好像没办法修改,只能在数据库中进行操作: 1.进入到wiki的安装目录下: #cd /var/www/html/wiki 2.查看wiki的配置文件, ...
- django面试七
Dango model 几种继承形式抽共享继承不能等实例化,抽象方法必须在子类中实现,Django不对其建立对应的表.class Animal(models.Model): name = models ...