项目概述:
资讯类APP后台:采用token认证方式,登录后,每次请求都需要在header中带着token。用户可以发表文章,可以收藏文章(收藏分类自定义),可以关注自己喜欢的用户,可以查看关注自己的人。项目并不复杂,只是想自己完整走一下开发的流程。当然原型图就不画了画的太丑了🤣。
项目采用Koa2进行开发,数据库使用MySQL,后期准备通过docker部署。
1.数据库设计
ER图:
2.项目初始化及结构
- 新建项目
1 | $ npm init -y |
- 安装koa以及相应模块
1 | $ npm install koa --save |
- 项目结构
入口文件是index.js
- Index.js
1 | const Koa = require('koa'); |
- 总路由
1 | const Router = require('koa-router'); |
3.功能
3.1登录
首先,登录功能写过都不知道多少遍了,我拿手直接就是搞,不过好像记得老师说过,今年毕设答辩极其严格,那怎么搞。经过一番考虑(吃把鸡冷静一下),不如搞个持久化登录。大概是这个样子的,token一般过期比较快,怎么能实现持久化登录呢?
登录成功 –>签发token–>前端设置拦截器保存–>请求到来–>token验证
我有一想法,签发token的同时存进数据库。MySQL是有事件的,所以可以用MySQL设置定时事件,假设设置token10天过期,在token验证之前进行拦截,首先对token进行查询,如果存在数据库内的话,就重新签发token,更新header和数据库中的token,并将token放在返回头中,以便前端更新token。然后再进行验证。
- 拦截token
1 | //拦截token 判断是否过期 |
- 验证token
1 | let kt = koajwt({ |
- 登录路由
1 | router.post("/login", async ctx => { |
- userModel.js
1 | //引入数据库处理工具 |