Ionic 3 - Перезагрузить страницу после входа в систему - если ни один пользователь не перенаправляет на страницу входа, в противном случае остается на странице - PullRequest
0 голосов
/ 04 июля 2018

Я сделал простое приложение с Ionic 3 / Angular 5. Просто Войти и Домашняя страница. Пользователь жестко запрограммирован в AuthService. После входа я делаю this.nav.push('HomePage'), где nav - это NavController в loginPage.ts файле.

В authService У меня есть это:

return Observable.create(observer => {
  let access = (credentials.password === "pw" && credentials.email === "em");
  this.currentUser = new User('Test', 'test@mail.com');
  observer.next(access);
  observer.complete();
});

и:

public getUserInfo(): User {
return this.currentUser;

}

В homePage.ts У меня есть это (auth это authService впрыскивается в компонент):

constructor(private nav: NavController, private auth: AuthService) {
let info = this.auth.getUserInfo();
this.username = info['name'];
this.email = info['email'];
* *} Тысяча двадцать-один

После входа мое приложение находится на домашней странице. И если я перезагрузить домашнюю страницу, пользователь теряется, и this.auth.getUserInfo() возвращает ноль ...

Как лучше хранить пользовательские данные (токен и т. Д.) Во время жизни приложения и проверять, существует ли пользователь на нужной странице, если нет пользователя, вернуться к входу в систему и очистить весь кэш и т. Д., И если пользователь существует, перезагрузите эту страницу или делать что угодно?

1 Ответ

0 голосов
/ 04 июля 2018

Вот несколько основных примеров локального хранилища,

Ссылка на локальное хранилище: -

Локальное хранилище в Angular 2

    localStorage.setItem("user", "Muthu");
    // localStorage.setItem("user", JSON.stringify("Muthu")); also do like this while object.

    let userName=localStorage.getItem("user");

   //let userName = JSON.parse(localStorage.getItem("user")); if you set some object using stringify method. then you can use like this,

    if(userName!=null && userName!=undefined){ 
       this.nav.push('HomePage'); //do some stuff for valid user
    }else{
       this.nav.push('LoginPage'); //do some stuff for invalid user
    }

Ссылка на очистку локального хранилища: -

Очистить localStorage в javascript?

Очистить все,

localStorage.clear();

Очистить определенный,

localStorage.removeItem("user");

Вам не нужно это локальное хранилище, давайте попробуем хранилище в ионном

Ссылка: -

https://ionicframework.com/docs/storage/

Установка: -

ionic cordova plugin add cordova-sqlite-storage
npm install --save @ionic/storage

импорт app.module.ts файл

import { IonicStorageModule } from '@ionic/storage';

 imports: [   
    IonicStorageModule.forRoot()
  ],

Файл машинописного текста,

import { Storage } from '@ionic/storage';

  constructor(private storage: Storage) { }

 // set a key/value
  storage.set('name', 'Max');

  // Or to get a key/value pair
  storage.get('name').then((val) => {
    console.log('Your name is', val);
  });

Моя лучшая рекомендация - просто использовать localStorage. Я надеюсь, что это решит вашу проблему.

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