#angular #firebase #ionic2 #firebase-authentication #angularfire2
#угловатый #firebase #ionic2 #firebase-аутентификация #angularfire2 #angular
Вопрос:
я использую ionic 2 rc0 и angular 2, и я только что добавил angularfire2 для использования аутентификации firebse.
Я все настроил и протестировал (я просто вижу, что мой пользователь вошел в консоль firebase), но я хочу перенаправить на другую страницу после входа в систему.
Мой код для входа в систему:
registerUserWithGoogle() {
console.log('Google');
this.af.auth.login();
}
Моя конфигурация firebase:
export const myFirebaseAuthConfig = {
provider: AuthProviders.Google,
method: AuthMethods.Redirect
};
Итак, есть способ перенаправить после метода login()?
Ответ №1:
AngularFire2 имеет свойство с именем authState
в AngularFireAuth
, на которое вы можете подписаться, чтобы получать изменения состояния авторизации
Это рекомендуемый способ обработки авторизации пользователя, поскольку вы будете подписываться на изменения в состоянии авторизации, другие методы могут работать не так, как ожидалось, например, когда пользователь обновляет страницу, объект пользователя может не существовать.
import { AngularFireAuth } from 'angularfire2/auth';
@Component({
templateUrl: 'app.html'
})
export class AppComponent {
constructor(public afAuth: AngularFireAuth) {}
ngOnInit() {
this.afAuth.authState.subscribe(user => {
if (user) {
// go to home page
} else {
// go to login page
}
});
}
}
Примечание: Вам не нужно подписываться на каждую страницу. Подписывайтесь только в AppComponent
или в корневом компоненте вашего приложения.
Комментарии:
1. спасибо, теперь это работает, мне нужен метод выхода из системы, потому что я все еще зарегистрирован, но он перенаправляет так много
2. просто вызовите
this.auth.logout()
, вы выйдете из системы, и будет вызванаelse
частьauth.subscribe
Ответ №2:
Я обнаружил, что в моей ситуации это работает лучше.
loginGoogle(){
this.af.auth.login({
provider: AuthProviders.Google
}).then((success) => {
this.router.navigate(['/dashboard']);
});
}
Комментарии:
1. По какой-то причине функция ‘then’ promise для меня не выполнялась, поэтому я применил описанный выше подход инициализации.
2. Тогда у меня тоже не работало. Когда вы вызываете login(), он перезагружает ваш компонент после аутентификации пользователя, и, таким образом, это обещание никогда не выполняется.
3. здравствуйте, Алекс Харпер, я внедряю ваш код, но все еще не работает. он перенаправляет с помощью компонентов входа и регистрации на одной странице.