Vue-Element-Admin集成自己的接口实现登录跳转


Posted in Vue.js onJune 23, 2021

1、先看一下请求配置文件,看axios.create这个方法,baseURL是基础路由

baseURL:process.env.VUE_APP_BASE_API,

路径:src-utils-request.js

Vue-Element-Admin集成自己的接口实现登录跳转

2、然后再看service.interceptors.request.use,设置token请求头,我后端集成的是jwt,所以请求头是Authentication,如图

config.headers['Authentication'] = getToken()

Vue-Element-Admin集成自己的接口实现登录跳转

3.设置自己的状态码,看service.interceptors.response.use,如图,设置为自己的状态码

Vue-Element-Admin集成自己的接口实现登录跳转

这是我服务器响应的数据,如下,1是正常响应数据

{
    "code": 1,
    "data": {
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJBY2NvdW50SWQiOiJhZG1pbiIsIm5iZiI6MTYyNDE3NTM4MiwiZXhwIjoxNjI0MTc1NDQyLCJpYXQiOjE2MjQxNzUzODJ9.7p8EHMx1b4-yIMRN7Qxden3nZsDmBvevHEf-3oVhFMg",
    "message": "登录成功",
    "state": true
    }
}

4、改.env.production和.env.development里面的api都为空,图只展示.env.production

Vue-Element-Admin集成自己的接口实现登录跳转

5、改基础路由配置,在devServer后面添加如下代码(before这行注释掉,这个用来模拟数据的,用不到),如图

// before: require('./mock/mock-server.js')
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: 'https://xiaoxingbobo.top',
        // target: 'http://192.168.1.119:8081',
        // target: 'http://192.168.1.253:8081',
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    }

Vue-Element-Admin集成自己的接口实现登录跳转

到这里基础路由基本配置好了

6、在src-view-login-index.html文件中,找到Vue-Element-Admin的登录接口,添加如下代码,如图,把官方的请求方式注释掉,this.loginForm是请求参数

this.loading = true
          this.$store.dispatch('user/login', this.loginForm)
            .then(() => {
              this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
              this.loading = false
            })
            .catch((e) => {
              this.tool.log(e)
              this.loading = false
            })

Vue-Element-Admin集成自己的接口实现登录跳转

7、设置用户登录成功后的跳转,登录后必须把token做缓存,不然登录页跳转不了

在src-store-moduls-use.js,如图

Vue-Element-Admin集成自己的接口实现登录跳转

找到action下的login方法,修改代码如下

const actions = {
  // user login
  login({
    commit
  }, userInfo) {
    const {
      accountId,
      password
    } = userInfo
 
    return new Promise((resolve, reject) => {
      console.log('userInfo', userInfo)
      //服务器需要的登录参数
      const payload = {
        accountId: accountId,
        password: password
      }
      //请求服务器
      user.login(payload).then(response => {
        const {
          data
        } = response
        console.log('response', response)
        commit('SET_TOKEN', data.token)
        setToken(data.token)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

找到getInfo方法,修改代码如下,因为获取用户信息接口没写,所以数据直接写死,根据自己的做调整

getInfo({
    commit,
    state
  }) {
    return new Promise((resolve, reject) => {
      /**
       * 这里请求用户信息和权限,目前接口没做,只注释了,data写死
       * */
      // user.getInfo(state.token).then(response => {
      // const {
      //   data
      // } = response
      const {
        data
      } = {
        data: {
          roles: ['admin'],
          introduction: 'Administrator',
          avatar: 'https://cloud.xiaoxingbobo.top/nongzhibang/20210429/1107491622257669573',
          name: 'administrator'
        }
      }
 
      if (!data) {
        reject('Verification failed, please Login again.')
      }
 
      const {
        roles,
        name,
        avatar,
        introduction,
        token
      } = data
 
      // roles must be a non-empty array
      if (!roles || roles.length <= 0) {
        reject('getInfo: roles must be a non-null array!')
      }
 
      commit('SET_ROLES', roles)
      commit('SET_NAME', name)
      commit('SET_AVATAR', avatar)
      commit('SET_INTRODUCTION', introduction)
      commit('SET_TOKEN', token)
      resolve(data)
      // }).catch(error => {
      //   reject(error)
      // })
    })
  },

这样就搞定了Vue-Element-Admin,可以登录到首页了

Vue-Element-Admin集成自己的接口实现登录跳转

到此这篇关于Vue-Element-Admin集成自己的接口实现登录跳转的文章就介绍到这了,更多相关Vue-Element-Admin登录跳转内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
Vue Elenent实现表格相同数据列合并
Nov 30 Vue.js
如何实现vue的tree组件
Dec 03 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
详解Vue slot插槽
Nov 20 Vue.js
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
Vue + iView实现Excel上传功能的完整代码
Vue vee-validate插件的简单使用
Jun 22 #Vue.js
vue3使用vue-router的完整步骤记录
一篇文章学会Vue中间件管道
Jun 20 #Vue.js
Vue过滤器(filter)实现及应用场景详解
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 #Vue.js
You might like
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
清除输入框内的空格
2016/12/21 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
JS实现json的序列化和反序列化功能示例
2017/06/13 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
angularjs http与后台交互的实现示例
2018/12/21 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Python接口开发实现步骤详解
2020/04/26 Python
CSS3弹性盒模型开发笔记(一)
2016/04/26 HTML / CSS
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
实习鉴定范文
2013/12/19 职场文书
研究生毕业鉴定
2014/01/29 职场文书
中队活动总结
2014/08/27 职场文书
高中生学习计划书
2014/09/15 职场文书
法人授权委托书范本
2014/09/17 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
年会主持人开场白台词
2015/05/29 职场文书
新店开张宣传语
2015/07/13 职场文书
小学校长开学致辞
2015/07/29 职场文书
中国梦宣传标语口号
2015/12/26 职场文书