Как сохранить адрес электронной почты и пароль пользователя firebase в Ionic Storage

Я новичок в ionic 3 и firebase. Я создал приложение, которое использует электронную почту и пароль для аутентификации пользователей. Прямо сейчас, когда вы выходите из приложения, пользователь выходит из системы, и ему приходится повторно входить в систему, что может быть проблемой. Я видел намеки на то, что некоторые пользователи сохраняют учетные данные пользователя (адрес электронной почты и пароль) в хранилище (@ ionic / storage), поэтому в следующий раз, когда они будут использовать приложение, оно автоматически войдет в систему. Это правильный способ сделать это? И если да, могу я посмотреть на пример? Любая помощь была бы замечательной.


person Jaiven Smith    schedule 14.02.2018    source источник
comment
Никогда не сохраняйте учетные данные пользователя на устройстве. Вы используете onAuthStateChanged, чтобы определить, что пользователь вошел в систему?   -  person bojeil    schedule 14.02.2018
comment
Я использовал onAuthStateChanged, чтобы получить текущего пользователя, вошедшего в систему, это выглядело примерно так: firebase.auth().onAuthStateChanged(function(user) { if (user) { this.navCtrl.setRoot(LoginPage); } else { // No user is signed in. } });   -  person Jaiven Smith    schedule 14.02.2018
comment
Однако это никогда не помогало мне. Я создавал ios несколько раз, чтобы проверить это, и всякий раз, когда я вхожу в систему, а затем закрываю приложение, navCtrl никогда не проходит проверку подлинности, и пользователям приходится снова входить в систему. Есть способ сделать это попроще?   -  person Jaiven Smith    schedule 14.02.2018
comment
Бывают случаи, когда localStorage не сохраняется в ионной, малой памяти в устройствах iOS. Firebase Auth работает над переходом на indexedDB, поскольку он более надежен. Вам необходимо выяснить первопричину этого. Попробуйте сохранить данные в localStorage, а затем перезапустите приложение. Если данные потеряны, это проблема. Вы можете попытаться сохранить данные в indexedDB или другом более постоянном / надежном хранилище, а затем при запуске приложения скопировать их обратно в localStorage. Вы можете использовать это, пока Firebase Auth не исправит эту проблему.   -  person bojeil    schedule 14.02.2018


Ответы (1)


Да, конечно, но лучше хранить с установленным флажком «Запомнить меня», который позволяет пользователю выбирать, использовать его или нет.

И я предпочитаю использовать NativeStorage

import { NativeStorage } from '@ionic-native/native-storage';

let login: string;

constructor(private nativeStorage: NativeStorage, ...) {
    this.login = '';
}

Пример магазина:

this.nativeStorage.setItem('LOGIN', 'Your Value').then(
    () => {
        // Do something, optional
    },
    error => {

    }
);

Получение примера:

this.nativeStorage.getItem('LOGIN').then(
    (data) => {
        // Get value and put it into our variable
        this.login = data;
    },
    error => {

    }
);

И используйте это в своем представлении:

<ion-input [(ngModel)]="login" type="text"></ion-input>

Подробнее о NativeStorage:

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

person MVG1984    schedule 14.02.2018
comment
Хранение учетных данных пароля в виде обычного текста на устройстве пользователя - одна из худших мер безопасности. - person bojeil; 14.02.2018
comment
Почему отрицательный? :) Это всего лишь пример того, как хранить и получать, а не полное решение, разумеется. Конечно, пароль должен быть зашифрован или хранить только имя пользователя. И решение, как это сделать, зависит от серверной части. - person MVG1984; 14.02.2018
comment
Это Web Security 101. Пароли должны хешироваться и обрабатываться с помощью сильных односторонних алгоритмов хеширования и храниться на стороне сервера (никогда в виде обычного текста). Firebase выпускает токены, которые можно отозвать, а также токены идентификатора, которые недолговечны. Я могу понять, предоставили ли вы способ хранения этих токенов, но настоятельно не рекомендуется хранить пароль пользователя на устройстве. Ваш ответ является одобрением этой плохой практики, и его не следует поощрять, особенно в связи с постоянными новостями об утечке учетных данных пользователей из-за плохих мер безопасности. - person bojeil; 14.02.2018
comment
Ладно, ты прав. И я не рекомендовал пароли магазинов. Я только показываю, как использовать NativeStorage без пароля, например, только имя пользователя. - person MVG1984; 14.02.2018