上一篇文章也写过:
现在的框架其实是在这边文章的基础上的升级版,进行了完善和拓展,更加符合实际开发,区别还挺大。上一篇文章只是单纯的获取token,并且token由底层代码进行redis存储,也没有token续费,所以这一次优化了redis自定义存储,我们可以自定义存储token、用户信息和自定义清除redis登录关键缓存信息,并且增加了解析token获取用户信息和token续费功能,配合前端进行自动续费,这样登录过程中token过期了能及时刷新续费token。
登录、注册、网站首页、查看订单(前端未实现,后端已实现单一订单,后续打算改造成合并订单,支持多商品下单~)
登录请求:
账号密码登录
接口返回:
accessToken就是登录token,前端会存储在页面缓存,my_token,userInfo为当前登录用户信息,如果refreshTokenFlag为true,则前端需要把缓存token刷新为返回的refreshToken,即为token续费:
续费:
登录和退出接口封装了直接的请求:
登录窗口和注册窗口封装为vue组件使用:
引用方法:
登录调用:
- handleLogin() {//登录
- this.$refs.loginForm.validate(valid => {
- if (valid) {
- const loading = this.$loading({
- lock: true,
- text: '登录中,请稍后。。。',
- spinner: "el-icon-loading"
- });
- this.$store.dispatch('login',this.loginForm).then((res)=>{
- if(res.code === 200){
- this.$notify({
- title: '登录成功',
- message: res.data.userName+',欢迎您!',
- type: 'success'
- });
- this.box = false;
- // this.$router.push({path: '/'});
- }
- }).finally(() =>
- loading.close()
- );
- }
- });
- },
退出类似:
- logoutFun(){//退出登录
- this.$confirm("确定退出登录?", {
- confirmButtonText: "确定",
- cancelButtonText: "取消",
- type: "warning"
- })
- .then(() => {
- this.$store.dispatch('logout').then((res)=>{
- if(res.code === 200){
- this.$notify({
- title: '退出成功',
- type: 'success'
- });
- }
- });
- })
- }
页面缓存方法:
import {setStore,getStore} from "@/utils/store";
设置缓存:
setStore({name: 'product', content: {productName: this.searchName}});
根据key获取:
let obj = getStore({name: 'product'});
接口返回:
注册完成后,记住用户名、密码,去登录
接口返回,每个分类附带其下的商品数量:
接口返回,默认展示根据第一个分类id查询商品,第一个分类为iphone13:
接口返回,根据名称搜索:
接口返回,分局分类id查询:
太长了,长截图都截不完~~~~
想到商品详情,就必然会用到富文本编辑器,用来自定义录入和编辑商品信息,这里运用了
vue-quill-editor
安装后,在main.js引入:
因为这种功能是管理后台的功能,这里只是安装了,略过~~~
效果图如下,你也许会好奇商品详情下面介绍的内容也太多太高大上了,怎么做?
简单,因为是富文本,但是作者有没有商品上传功能,所以手动去某东,某宝商品详情,直接把网页代码拷贝下来
选择鼠标右键,copy下来,贴到数据库字段:
点击立即购买,跳转购物车页面,购物车记到本地缓存中,不在数据库
往购买列表添加新商品: