Обработка перенаправления после обещания - PullRequest
0 голосов
/ 07 ноября 2018

Я работаю над аутентификационной частью веб-сайта, вот метод, который вызывается, когда пользователь отправляет форму подключения:

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') вызывается, даже если пользователь отправил неправильный пароль и пользовательскую почту. Я не понимаю почему. Может кто-нибудь объяснить мне, пожалуйста?

1 Ответ

0 голосов
/ 08 ноября 2018

Похоже, что сервер возвращает 200 с пустым ключом, даже если имя пользователя и пароль недействительны. Мы можем добавить условие, чтобы проверить, доступен токен или нет

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);
  });
}
...