最近有一个实现单点登录的需求,具体流程是:
1. 主平台登录,获取到登录子平台的ticket
2. 携带ticket登录子平台, 获取权限进入子平台
问题的产生跟具体需求没有直接关系,在与后台对接过程中,由post改为get请求,请求头中的content-type也做了修改,修改后本地调试是OK的,但是打包部署到生产环境,诡异的事情发生了:虽然我已经改为get,请求参数也从body改为后台需要的content-type,但是生产环境的后台接收到的依然是post, body参数。
束手无策的情况下,请教前端大佬朋友,他问我试过修改函数名没有,于是我在调用接口的函数名加了一个1,然后打包到生产环境……奇迹出现了!问题解决!
推测此问题的原因为部署前端包覆盖原来的包, 但是因为函数名相同,所以生产环境的逻辑并没有更新,这可真是个天坑啊!
以下是修改后的代码,只不过在‘ssoLogin’加了一个‘1’而已……
methods: {
...mapActions(['Login', 'Logout']),
ssoLogin1() {
const {
form: { validateFields },
Login
} = this
Login(this.ticket)
.then((res) => {
// console.log('登录信息', res)
this.loginSuccess(res)
})
.catch((err) => {
console.log('login err', err)
this.$message.error('跳转失败, 请重试')
})
},
loginSuccess(res) {
// console.info('登陆成功', res)
this.$router.push({ path: '/oversystem/radar' })
// 延迟 1 秒显示欢迎信息
setTimeout(() => {
this.$notification.success({
message: '欢迎',
description: `${timeFix()},欢迎回来`
})
}, 1000)
},
}
虽然只是一个小技巧,没有足够的开发经验,踩过的天坑,是根本想不到的,感叹经验的重要性!