折腾了好几天值得记录一下,用的是花裤衩的element-ui-template模板,后台接口是公司写好的。

难点主要在登录和获取用户信息,和模板上的有出入,公司的登录api请求后直接返回token、用户分组、用户头像,不用再次请求用户信息。

退出时,公司的后端没有token销毁接口,由浏览器直接销毁。

1.修改登录接口

在api/user中找到login函数

import request from '@/utils/request'export function login(data) {return request({url: '/v1/business/login', //改成你的接口method: 'post',data,})
}

修改.env.development文件中BASE_API为空

# just a flag
ENV = 'development'# base api
VUE_APP_BASE_API = '' //这里改为空

修改utils/request.js中BASE_URL和状态码

// create an axios instance
const service = axios.create({baseURL: 'http://47.105.172.000/serverPensionAdmin/api', // 改成你自己的 //url = base url + request url// withCredentials: true, // send cookies when cross-domain requeststimeout: 5000 // request timeout
})

改状态码

response => {const res = response.data// if the custom code is not 20000, it is judged as an error.if (res.httpCode !== 200) {Message({message: res.message || 'Error',type: 'error',duration: 5 * 1000})// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;if (res.code === 50008 || res.code === 50012 || res.code === 50014) {// to re-loginMessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {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}},

在utils/validate中修改允许登录的用户名

export function validUsername(str) {const valid_map = ['admin', 'editor', 'yufeng'] //原来只允许两个,yufeng是我加上去的,根据实际情况修改return valid_map.indexOf(str.trim()) >= 0
}

修改登录字段,如果你的登录字段为username和password就不用修改,恰好我的登录字段为account,因此需要修改下,store/modules/user

 // user loginlogin({ commit }, userInfo) {const { username, password } = userInfoconsole.log('打印response 前');return new Promise((resolve, reject) => {login({ account: username.trim(), password: password }).then(response => {console.log('打印response',response);this.dd = responseconst  {result}  = response

2.注释掉getInfo和logout引用

注释掉getInfo,改用自建函数给头像和用户分组赋值
src根目录下permission

if (hasToken) {if (to.path === '/login') {// if is logged in, redirect to the home pagenext({ path: '/' })NProgress.done()} else {const hasGetUserInfo = store.getters.nameconsole.log('print hasGetUserInfo------->', hasGetUserInfo);if (hasGetUserInfo) {next()} else {try {// get user infoconsole.log('permission userinfo');// await store.dispatch('user/getInfo')   //去掉这一行之后竟然可以登陆了await store.dispatch('user/login2') //这是自建函数,给头像和用户分组赋值console.log('permission userinfo222222222222');

自建函数, 给头像和用户分组赋值 store/modules/user.js

// testlogin2() {console.log('this is a test ----------------->', this.dd);//设置头像和用户权限const name = this.dd.result.bnameconst avatar = this.dd.result.headUrl//state.name = namestate.avatar = avatar},

因为不用请求退出api,所以在layout/components/Navbar.vue中,注释掉logout函数,直接用本地清除token的方式,

methods: {toggleSideBar() {this.$store.dispatch('app/toggleSideBar')},async logout() {// await this.$store.dispatch('user/logout') 请求登出api,因为后台pc端暂时不用请求退出api,直接清掉token即可退出await this.$store.dispatch('user/resetToken')this.$router.push(`/login?redirect=${this.$route.fullPath}`)}}
}

至此,登陆问题解决,上图

[在这里插入图片描述](https://imgconvert.csdnimg.cn/aHR0cHM6Ly90dmExLnNpbmFpbWcuY24vbGFyZ2UvMDA3UzhaSWxseTFnaGJkb3JobzFvajMwc3kwdGN3bmguanBn?x-oss-process=image/format,png =200x200)

参考文章
vue-element-admin-master修改为自己的登录接口

Promise resolve()的用法

【vue】前端必须掌握的登陆 token 处理( Vue 登陆处理 token 的补充)

在Vuex使用 以及 dispatch和commit来调用mutations的区别

store/module/user.js

有需要的同学可以参考下

import { login, logout, getInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { resetRouter } from '@/router'const getDefaultState = () => {return {token: getToken(),name: '',avatar: ''}
}const state = getDefaultState()const dd = {}const mutations = {RESET_STATE: (state) => {Object.assign(state, getDefaultState())},SET_TOKEN: (state, token) => {state.token = token},SET_NAME: (state, name) => {state.name = name},SET_AVATAR: (state, avatar) => {state.avatar = avatar}
}const actions = {// user loginlogin({ commit }, userInfo) {const { username, password } = userInfoconsole.log('打印response 前');return new Promise((resolve, reject) => {login({ account: username.trim(), password: password }).then(response => {console.log('打印response',response);this.dd = responseconst  {result}  = responseconsole.log('print data',result);commit('SET_TOKEN', result.token)setToken(result.token)console.log('token------------------');//设置头像和用户权限const name = response.result.bnameconst avatar = response.result.headUrl//this.state.name = namestate.avatar = avatarconsole.log('记录state.name',this.state.name,state.avatar, name, avatar, response);resolve()}).catch(error => {'print catch error'.logreject(error)})})},// testlogin2() {console.log('this is a test ----------------->', this.dd);//设置头像和用户权限const name = this.dd.result.bnameconst avatar = this.dd.result.headUrl//state.name = namestate.avatar = avatar},// get user infogetInfo({ commit, state }) {console.log('is reached here');return new Promise((resolve, reject) => {getInfo(this.dd).then(response => {console.log('print getinfo response');// const { data } = response// if (!data) {//   return reject('Verification failed, please Login again.')// }//console.log('bname');const name = response.bnameconst avatar = response.headUrl//// commit('SET_NAME', name)// commit('SET_AVATAR', avatar)// console.log('have set avtar');// resolve(data) 注释后不往外传数据}).catch(error => {console.log('get info have error');reject(error)})})},// user logoutlogout({ commit, state }) {return new Promise((resolve, reject) => {logout(state.token).then(() => {removeToken() // must remove  token  firstresetRouter()commit('RESET_STATE')resolve()}).catch(error => {reject(error)})})},// remove tokenresetToken({ commit }) {return new Promise(resolve => {removeToken() // must remove  token  firstcommit('RESET_STATE')resolve()})}
}export default {namespaced: true,state,mutations,actions
}

修改element-ui-template 登录接口 api login相关推荐

  1. 微信小程序api登录接口wx.login(OBJECT)

    有些小程序可以直接使用而无需登录,例如,古诗.美图欣赏.美文等,这些微信小程序往往没有登录要求,只需要打开使用就可以了.但是,很多的小程序则往往需要登录,例如,在微信小程序里面您要发表评论.您要购买产 ...

  2. 修改element ui的导航菜单样式,包括下拉菜单

    第一次使用element ui,根据项目需求,选择了NavMenu导航菜单, Element - The world's most popular Vue UI framework 首先将代码复制粘贴 ...

  3. Web前端笔记-修改element ui中表格样式(透明、去横纵线等含修改思路)

    官方效果是这样的: 此处改成了这样的效果: 此处是可以进行滑动的,就是去除了滑动条,仍能滑动的效果. 下面说下修改样式,找到使用el-table的vue组建: 在style中贴上: <style ...

  4. 修改element ui tree 搜索功能,实现分级搜索,关键字高亮

    element ui 里面的tree 自带的搜索功能是默认搜索的全部数据,有关键字的显示,没有的不显示 需求: 在element UI tree 原有功能不变的情况下新加 1)搜索 tree 时,如果 ...

  5. 修改element ui中form表单的 label 颜色样式

    此时,emement ui的form表单的label(年龄二字)是黑色的. 原代码: <template><el-form :model="numberValidateFo ...

  6. 闲云旅游网03(基于vue+element ui)登录注册功能开发

    登录功能 项目GitHub地址:https://github.com/q2419068625/xianyun 新建登录注册页的布局 新建了登录的表单 绑定了数据到data rules表单的验证 提交数 ...

  7. html注册登录接口,API注册

    请求报文如下所示: { "connection": { "ConnectionKey": "erp", "ConnectionTy ...

  8. element ui滑动登录,密码强度提示

    我们知道验证码的目的 是为了验证到底是人还是机器. 我这里写的只是模仿了样式,并没有进行那些复杂的操作,所以并不安全(不能判断人还是机器),下面看效果: 一.新建文件logi.vue,把密码强度和拖动 ...

  9. vue中修改Element ui样式不起作用

    公司做的一个后台系统,由于Elemen ui是响应式的,在小屏笔记本中,一行两列的表单会自动变成一行一列,这样就很不美观了,由于是后台系统,当时也没考虑适配问题. 老总 地表最强的电脑 运行了一下,当 ...

最新文章

  1. sersync+rsync数据同步
  2. 在大公司工作3年以上的人,如何摆脱螺丝钉的现实?
  3. python 面试题 博客园_python面试题
  4. 2020年搜索推荐系统论文干货集锦
  5. python判断点在直线的哪一侧_判断点在直线的哪一侧
  6. Leetcode-53 Maximum Subarray
  7. opencv中匹配点对的坐标提取
  8. Python--day26--复习
  9. elasticsearch mongodb mysql_Elasticsearch 与 Mongodb 数据同步问题
  10. 无限分级 层次输出 demo
  11. [jquery] 删除文章的时候弹出确认窗口
  12. 网络监控工具--ntop
  13. Android 软键盘盖住输入框的问题
  14. VMP2.0版本带壳调试教程
  15. gis等时圈怎么做_ArcGIS中输入风格一致的带圈数字
  16. 机器人高速切削加工多种应用图例
  17. Windows Server 2012 R2 服务器密码忘记问题
  18. 什么叫Jour-fix
  19. 【ESP 保姆级教程】疯狂Node.js服务器篇 ——案例:ESP8266 + MQ3酒精传感器 + NodeJs本地服务 + 文件存储数据
  20. 如何打造有特色的在线教育培训平台

热门文章

  1. 使用http访问页面时,将其跳转成https
  2. Endnote插入参考文献时中英文混排字体设置
  3. postek二次开发_各类标签一机打尽博思得C168条码打印机评测
  4. 抗疫得闲●流花湖(1)
  5. sql在线练习网站(http://sqlzoo.cn)答案解析(1)
  6. animation css 透明度逐渐_CSS实现透明度变化的动画 (淡入淡出效果)
  7. 命令行 | 登录校园网 | curl
  8. 「高频面试题」浏览器从输入url到页面展示中间发生了什么
  9. 基于阿里云的OSS上传从简单实现 到项目业务应用(一)入门了解篇
  10. HFSS常见绘图技巧