Функция входа в Nativescript vue возвращает true - PullRequest
0 голосов
/ 30 апреля 2019

Здравствуйте, я использую функцию, очень похожую на эту, с небольшими изменениями. https://play.nativescript.org/?template=play-vue&id=HdDm9M&v=786

Когда я вхожу в свой API api, если я ввожу неправильное имя пользователя или пароль, он всегда возвращает true(войдя в систему).

Он должен выполнить блок catch, когда мое имя пользователя или пароль неверны, но он этого не делает.Я имел эту проблему раньше и исправил ее, но теперь я не могу понять, почему это происходит.

В моем Login.vue

     login() {
            this.$backend
                .login(this.user)
                .then(() => {

                    // if login success then save login and password in local storage
                    appSettings.setString("username", this.user.username);
                    appSettings.setString("password", this.user.password);


                    this.$store.commit('setActualPage', 'Main');
                    this.processing = false;
                    this.$navigateTo(Main, { clearHistory: true });

                })
                .catch(() => {
                    this.processing = false;
                    this.alert(
                    "Username or password are not correct."
                    );
                });
        },

и моем backend-service.js

  login(user) {

    return httpModule.request({
        url: "MYRESTAPIURL",
        method: "POST",
        headers: {
            "Content-Type": "application/x-www-form-urlencoded",
            "username": user.username,
            "password": user.password,
            "apikey": "814973593645gg6db8ca6983789f"
        }
    }).then((response) => {
        let result = response.content.toJSON();


        return result;

        //console.log(result.premiumdays)
    }, (e) => {
        console.log(e);
    });
}

Этот return result; дает вывод ниже, если это неправильный пользователь или пароль:

{ error: 'Not connected.' }

Даже если я введу return;, чтобы вернуть false, он регистрирует меня.

1 Ответ

1 голос
/ 30 апреля 2019

из вашего кода: при неудачном входе в систему фоновой службы результат JSON отправляется обратно на вашу страницу (login.vue), поэтому, возможно, вам следует добавить код для проверки возвращаемого JSON:

login.vue


login() {
            this.$backend
                .login(this.user)
                .then((resp) => {

                   // verify the return data
                   if(resp && resp.error){
                       // login failed,do sth
                        this.processing = false;
                        this.alert(
                           "Username or password are not correct."
                        );
                   }else{
                        // login success
                   }

                })
                .catch(() => {
                    this.processing = false;
                    this.alert(
                    "Username or password are not correct."
                    );
                });
        },

оператор catch не будет выполнен, если код ответа HTTP не является 200. Поэтому login failed не является запросом об ошибке, это просто успешный запрос с данными об ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...