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 相关文章推荐
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
Vue实现简单计算器
Jan 20 Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
Vue接口封装的完整步骤记录
May 14 Vue.js
vue-cropper插件实现图片截取上传组件封装
May 27 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue特效之翻牌动画
Apr 20 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
追求程序速度,而不是编程的速度
2008/04/23 PHP
PHP中文分词的简单实现代码分享
2011/07/17 PHP
服务器变量 $_SERVER 的深入解析
2013/07/02 PHP
百度站点地图(百度sitemap)生成方法分享
2014/01/09 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
tp5.1 框架查询表达式用法详解
2020/05/25 PHP
htm调用JS代码
2007/03/15 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
CSS3结合jQuery实现动画效果及回调函数的实例
2017/12/27 jQuery
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
基于python实现学生信息管理系统
2019/11/22 Python
Python解析多帧dicom数据详解
2020/01/13 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Selenium获取登录Cookies并添加Cookies自动登录的方法
2020/12/04 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
市政施工员自我鉴定
2014/01/15 职场文书
会务接待方案
2014/02/27 职场文书
房地产开发项目建议书
2014/05/16 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
2019求职信大礼包
2019/05/15 职场文书
JavaScript canvas实现流星特效
2021/05/20 Javascript
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
MySQL实现用逗号进行拼接、以逗号进行分割
2022/12/24 MySQL