Mockjs在Vue中的简单应用及用户登录的简单实现思路


1、安装

在创建完vue-cli项目后,通过npm安装到项目中。

npm install mockjs --save

2、在项目中创建Mock模块

在src目录下创建mock文件夹,并在mock文件夹中创建user.js和index.js。

user.js:用于生成模拟数据,例如(数据随便写的,没用到mockjs的语法模板)

export const getUserInfo = () => {
    let userInfo = {
        "error_code": 0,
        "data": [{
            "id": '1',
            "usertitle": "管理员",
            "username": "admin",
            "password": "123456",
            "token": "12345",
          },
          {
            "id": '2',
            "usertitle": "超级管理员",
            "username": "root",
            "password": "root",
            "token": "23456",
          }
        ]
    }
    return userInfo
}

index.js:mock模块的入口文件,例如:

import Mock from 'mockjs'
import { getUserInfo } from './user'

let data = Mock.mock(/\/login/, 'get', getUserInfo)

export default data

3、在项目中引入mock模块

在main.js中,添加如下代码:

if (process.env.NODE_ENV !== 'production') require('./mock/index')

判断环境,开发环境引入mock模块,生产环境就用线上真实的接口。

4、接口调用

调用方式:

this.$axios.get('/login').then(response=>{})

5、用户登录的简单实现思路

1、第一次登录的时候,前端调后端的登陆接口,发送用户名和密码

2、后端收到请求,验证用户名和密码,验证成功,就给前端返回一个token

3、前端拿到token,将token存储到localStorage和vuex中,并跳转路由页面

4、前端每次跳转路由,就判断 localStroage 中有无 token ,没有就跳转到登录页面,有则跳转到对应路由页面

5、每次调后端接口,都要在请求头中加token

6、后端判断请求头中有无token,有token,就拿到token并验证token,验证成功就返回数据,验证失败(例如:token过期)就返回401,请求头中没有token也返回401

7、如果前端拿到状态码为401,就清除token信息并跳转到登录页面

router.beforeEach((to, from, next) => {
  //路由中设置的needLogin字段就在to当中 
  if(sessionStorage.getItem('token')){
    //console.log(to.path) //每次跳转的路径
    if(to.path === '/'){
      //登录状态下 访问login.vue页面 会跳到index.vue
      next({path: '/index'});
    }else{
      next();
    }
  }else{
    // 如果没有session ,访问任何页面。都会进入到 登录页
    if (to.path === '/') { // 如果是登录页面的话,直接next() -->解决注销后的循环执行bug
      next();
    } else { // 否则 跳转到登录页面
      next({ path: '/' });
    }
  }

  if (to.meta.title) {
    document.title = to.meta.title  //设置页面的title
  }

  if(to.fullPath == "/"){
    if(sessionStorage.getItem('data')){
      next({
        path:from.fullPath
      });
    }else {
      next();
    }
  }
})
axios.interceptors.request.use(   //设置header,添加token
  config => {
    if (localStorage.getItem('token')) {
      config.headers.Authorization = localStorage.getItem('token');
    }
 
    return config;
  },
  error => {
    return Promise.reject(error);
  });

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM