项目主要分为“宠物信息展示”和“即时通讯”两部分进行开发,其中使用 JsonWebToken 实现前后端用户验证登录;并配合 Axios 实现前后端数据传输、请求响应拦截等操作;使用阿里云OSS对象存储服务对用户图片进行网上托管; 服务端使用Koa Web应用框架搭建后端,并封装Sql语句对数据库进行相关数据操作;基于socket.io库来实现服务端实时推送消息,客户端并配合使用socket.io-client 库来接收数据,由此实现即时通讯功能;
1、token登录验证
在前端请求头中,获取到 authorization 对应的token字段,返回到 Auth 函数进行token验证。验证通过即可在ctx.state.user中获取到当前发送请求的用户id,失败或者token过期则会返回前端401 用户未登录,并跳转前端进行登录,登录成功服务器返回浏览器新的token用于下次身份验证。
2、图片上传的主要流程为:
前端要上传图片时,到后端服务器取上传的policy及签名(signature);
后端服务器返回上传所需的policy和signature;
前端拿到了签名后,直接根据OSS服务器地址(Bucket 域名)发起请求上传到OSS服务器;
3、实现上拉加载
在主页查看宠物信息的时候,我们并不需要将数据库中的所有宠物数据全给请求过来,在用户当前页面显示有一定数量的宠物信息,监听用户的页面的滚动事件,判断页面是否触底,是则再次请求数据并入数组。而后端则采用分页查询的方式返回数据,因此在前端数据请求的时候需要向后端返回当前页数和查询条数。
4、验证码生成
使用canvas来绘制验证码图案。主要思路为:先将大小写字母以及阿拉伯数字串联写成一个字符串存入数据源,进行四次随机读取字符串上的字符,需要将选出的四个字符形成新的字符串传回给父组件,以便之后验证正确性使用。