vue-admin-template 登录改造

本文为修改vue-admin-template第一步,将请求地址和状态码改为自己项目的地址,并成功进入页面

请求地址更改

// 第一种方法:.env.development文件内,将 VUE_APP_BASE_API = '/dev-api'
改为:VUE_APP_BASE_API = 'http://127.0.0.1:8000'


//第二种方法:
//在vue.config.js文件内
//注释掉mock接口配置
//配置代理转发请求到目标接口
// before: require('./mock/mock-server.js')
proxy: {
  '/dev-api': { // 匹配所有以 '/dev-api'开头的请求路径
    target: 'http://localhost:8800',
    changeOrigin: true, // 支持跨域
    pathRewrite: { // 重写路径: 去掉路径中开头的'/dev-api'
      '^/dev-api': ''
    }
  }
}

request.js请求封装和状态码修改

import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken } from '@/utils/auth'

const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
  // withCredentials: true, // 发送cookie时,跨域请求
  timeout: 5000 // request timeout
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    //  在发送请求之前做些什么

    if (store.getters.token) {
      // 让每个请求都带有令牌
      //  [' x token']是自定义标头键
      // 请根据实际情况修改 Authorization
      // config.headers['X-Token'] = getToken()
      config.headers['Authorization'] = getToken()
    }
    return config
  },
  error => {
    // 做一些请求错误
    console.log(error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  /**
   * 如果您想获得HTTP信息,如标头或状态
   * return  response => response
  */

  /**
   * 根据自定义代码确定请求状态
   * 这里只是一个例子
   * 您也可以通过ttp状态码来判断状态
   */
  response => {
    const res = response.data
    // 根据后端状态码调整
    // 后端的状态码为 status 所以同步修改
    res.code = res.status
    if (res.code !== 0) {
      Message({
        message: res.msg || 'Error',
        type: 'error',
        duration: 5 * 1000
      })

      // 50008: 非法令牌;50012:其他客户端已登录;50014:令牌过期;
      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        // to re-login
        MessageBox.confirm('您已退出登录,您可以取消以留在此页面上,或重新登录', '确认退出登录', {
          confirmButtonText: 'Re-Login',
          cancelButtonText: 'Cancel',
          type: 'warning'
        }).then(() => {
          store.dispatch('user/resetToken').then(() => {
            location.reload()
          })
        })
      }
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    console.log('err' + error) // for debug
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service

修改请求的接口地址 api/user.js

import request from '@/utils/request'

// 登录
export function login(data) {
  return request({
    url: '/manage/login',
    method: 'post',
    data
  })
}

// 获取用户信息
export function getInfo(token) {
  return request({
    url: '/manage/getUserInfo',
    method: 'post',
    data: { token }
  })
}
// 退出登录 暂未有退出登录接口
export function logout() {
  return request({
    url: '/vue-admin-template/user/logout',
    method: 'post'
  })
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值