кнопка назад в android прерывает nativescript- vue контроль доступа вход в систему - PullRequest
0 голосов
/ 29 февраля 2020

Я придумал реализацию контроля доступа для приложения на нативном скрипте, но кнопка возврата android не работает.

Сценарий:

  1. Откройте приложение
  2. нажмите логин
  3. нажмите кнопку возврата в android (приложение будет свернуто)
  4. Снова откройте приложение (вы должны видеть, что вы вошли в систему, но вы видите, что вы вышли из системы)
  5. Теперь фактически закройте приложение
  6. Снова откройте приложение (вы увидите, что вы на самом деле вошли в систему, но приложение отображало для вас неправильную страницу)

Как я могу исправить эту проблему? Как лучше всего оставаться в системе в приложении nativescript- vue?

Вот пример детской площадки

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Иногда это происходит с глобальными переменными, мне не удалось отследить, насколько точно, но горячее исправление заключается в использовании функции.

function isLoaddedIn() {
    return ApplicationSettings.getString('is_logged_in') == 'true';
}

new Vue({
    render: h => h('frame', [h(isLoaddedIn() ? In : Out)])
}).$start()
0 голосов
/ 01 марта 2020

Вот мое первоначальное решение:

приложение. js

import Vue from 'nativescript-vue';
import Proxy from './components/Proxy';

new Vue({render: h => h('frame', [h(Proxy)])}).$start();

In. vue

<template>
  <Page>
    <ActionBar title="Logged in" />
    <button text="Logout" @tap="logout" />
  </Page>
</template>

<script>
  import * as ApplicationSettings from 'tns-core-modules/application-settings';
  import Out from './Out';

  export default {
    methods: {
      logout() {
        ApplicationSettings.setString('is_logged_in', 'false');
        this.$navigateTo(Out, {
          clearHistory: true,
        });
      },
    },
  };
</script>

Out. vue

<template>
  <Page>
    <ActionBar title="Not Logged in" />
    <button text="Login" @tap="login" />
  </Page>
</template>

<script>
  import * as ApplicationSettings from 'tns-core-modules/application-settings';
  import In from './In';

  export default {
    methods: {
      login() {
        ApplicationSettings.setString('is_logged_in', 'true');
        this.$navigateTo(In, {
          clearHistory: true,
        });
      },
    },
  };
</script>

Proxy. vue

<template>
  <Page @loaded="startMyApp">
    <ActionBar title="Proxy" />
    <label text="hello" />
  </Page>
</template>

<script>
  import * as ApplicationSettings from 'tns-core-modules/application-settings';
  import In from './In';
  import Out from './Out';

  export default {
    methods: {
      startMyApp() {
        const is_logged_in = ApplicationSettings.getString('is_logged_in');
        const target_page = is_logged_in == 'true' ? In : Out;
        this.$navigateTo(target_page, {
          clearHistory: true,
        });
      },
    },
  };
</script>

Я решил создать новый прокси-компонент, но то же самое можно сделать без этого, создав хуки в Login и Main.

Конечно, asnwer Manoj's намного более блестящий, я только что опубликовал это, чтобы люди могли видеть альтернативные хаки.

...