javascript - promise 后的重定向处理

标签 javascript vue.js promise axios vuex

我正在处理网站的身份验证部分,这是用户发送连接表单时调用的方法:

login() {
   this.$store.dispatch('RETRIEVE_TOKEN', {
        username: this.username,
        password: this.password,
    })
}

行动:

RETRIEVE_TOKEN(context, credentials) {

  return new Promise((resolve, reject) => {
    axios.post('someurl/auth', {
       email: credentials.username,
       password: credentials.password
          })

          .then(response => {
              const token = response.data.key

              localStorage.setItem('key', token)
              context.commit('retrieveToken', token)
              resolve(response)

              this.$router.push('/backoffice')
          })

          .catch(error => {
             console.log(error);
             reject(error)
          });

        })
    }

我的问题是,即使用户发送了错误的密码和用户邮箱,也会调用 this.$router.push('/backoffice') 。我不明白为什么。有人可以给我解释一下吗?

最佳答案

即使用户名和密码无效,服务器似乎也会返回 200 并带有空 key 。我们可以添加一个条件来检查 token 是否可用

RETRIEVE_TOKEN(context, credentials) {
  return axios.post('someurl/auth', {
     email: credentials.username,
     password: credentials.password
  })
  .then(response => {
    console.log(response.data) // If it not works, please show what's logged here
    const token = response.data.key

    if (token) { // check if token is valid
      localStorage.setItem('key', token)
      context.commit('retrieveToken', token)
      this.$router.push('/backoffice')
    } else {
      console.log('Token is not available')
    }
  })
  .catch(error => {
     console.log(error);
  });
}

关于javascript - promise 后的重定向处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53194845/

相关文章:

vue.js - 使用Vue CLI3.0创建多页应用程序,如何处理此错误?

javascript - Parse.Query.each() 链式 promise

javascript - 创建描述点的离散分布的颜色渐变

javascript - NodeJS - 从异步 for 循环获取数组

javascript - 幻灯片的动画不起作用

javascript - 递归过滤 bool 键的数据

typescript - Angular 2 : Convert Observable to Promise

javascript - 稍后在 TypeScript 中解决或拒绝 Promise

php - 修复 jQuery 即时搜索脚本选项卡

javascript - 绝对路径在 Gatsby 图像中不起作用?