Я новичок в ionic 3 и firebase. Я создал приложение, которое использует электронную почту и пароль для аутентификации пользователей. Прямо сейчас, когда вы выходите из приложения, пользователь выходит из системы, и ему приходится повторно входить в систему, что может быть проблемой. Я видел намеки на то, что некоторые пользователи сохраняют учетные данные пользователя (адрес электронной почты и пароль) в хранилище (@ ionic / storage), поэтому в следующий раз, когда они будут использовать приложение, оно автоматически войдет в систему. Это правильный способ сделать это? И если да, могу я посмотреть на пример? Любая помощь была бы замечательной.
Как сохранить адрес электронной почты и пароль пользователя firebase в Ionic Storage
Ответы (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
Хранение учетных данных пароля в виде обычного текста на устройстве пользователя - одна из худших мер безопасности.
- person bojeil; 14.02.2018
Почему отрицательный? :) Это всего лишь пример того, как хранить и получать, а не полное решение, разумеется. Конечно, пароль должен быть зашифрован или хранить только имя пользователя. И решение, как это сделать, зависит от серверной части.
- person MVG1984; 14.02.2018
Это Web Security 101. Пароли должны хешироваться и обрабатываться с помощью сильных односторонних алгоритмов хеширования и храниться на стороне сервера (никогда в виде обычного текста). Firebase выпускает токены, которые можно отозвать, а также токены идентификатора, которые недолговечны. Я могу понять, предоставили ли вы способ хранения этих токенов, но настоятельно не рекомендуется хранить пароль пользователя на устройстве. Ваш ответ является одобрением этой плохой практики, и его не следует поощрять, особенно в связи с постоянными новостями об утечке учетных данных пользователей из-за плохих мер безопасности.
- person bojeil; 14.02.2018
Ладно, ты прав. И я не рекомендовал пароли магазинов. Я только показываю, как использовать NativeStorage без пароля, например, только имя пользователя.
- person MVG1984; 14.02.2018
onAuthStateChanged
, чтобы определить, что пользователь вошел в систему? - person bojeil   schedule 14.02.2018onAuthStateChanged
, чтобы получить текущего пользователя, вошедшего в систему, это выглядело примерно так:firebase.auth().onAuthStateChanged(function(user) { if (user) { this.navCtrl.setRoot(LoginPage); } else { // No user is signed in. } });
- person Jaiven Smith   schedule 14.02.2018navCtrl
никогда не проходит проверку подлинности, и пользователям приходится снова входить в систему. Есть способ сделать это попроще? - person Jaiven Smith   schedule 14.02.2018localStorage
не сохраняется в ионной, малой памяти в устройствах iOS. Firebase Auth работает над переходом наindexedDB
, поскольку он более надежен. Вам необходимо выяснить первопричину этого. Попробуйте сохранить данные вlocalStorage
, а затем перезапустите приложение. Если данные потеряны, это проблема. Вы можете попытаться сохранить данные вindexedDB
или другом более постоянном / надежном хранилище, а затем при запуске приложения скопировать их обратно вlocalStorage
. Вы можете использовать это, пока Firebase Auth не исправит эту проблему. - person bojeil   schedule 14.02.2018