He estado usando la biblioteca aws-amplify con ionic y me preguntaba cómo verificaría si un usuario inició sesión. Vengo de un fondo de base de fuego, por lo que esto es bastante diferente. Esto es para que pueda otorgar acceso a ciertas páginas según el estado de inicio de sesión del usuario. En mi proveedor de auth , importo Amplify {Auth} . Puedo ver que es posible obtener varios datos, pero no estoy seguro de qué usar. Hay currentUserPoolUser , getCurrentUser() , getSyncedUser() , currentAuthenticatedUser , currentSession , getCurrentUser() , userSession , currentUserCredentials , currentCredentials y currentUserInfo . Parece que tampoco puedo encontrar ninguna documentación sobre nada de esto. Todo lo que he leído y visto se oculta hasta que el usuario inicia sesión... ¿Se supone que todo esto debe hacerse en el cliente? Gracias.
Estoy usando la función ionViewCanEnter() en cada página para permitir/denegar el acceso. El valor de retorno de esta función determina si la página se puede cargar o no (y se ejecuta antes de ejecutar el costructor). Dentro de esta función tienes que implementar tu lógica.
En mi caso, usando Amplify, estoy haciendo esto:
async function ionViewCanEnter() { try { await Auth.currentAuthenticatedUser(); return true; } catch { return false; } }Dado que amplificar currentAuthenticatedUser() devuelve una promesa, uso async await para esperar la respuesta para saber si el usuario ha iniciado sesión o no.
Oye, creo que por ahora solo puedes usar Auth.currentUserInfo(); para detectar si ha iniciado sesión o no. Volverá undefined si no ha iniciado sesión o un object si lo está.
si está utilizando angular con ionic, puede hacer algo como esto en su servicio de autenticación
import {AmplifyService} from 'aws-amplify-angular'; . . constructor(private amplifyService:AmplifyService) { this.amplifyService.authStateChange$.subscribe(auth => { switch (auth.state) { case 'signedIn': this.signedIn=true; case 'signedOut': this.signedIn=false; break; default: this.signedIn=false; } } } entonces puede usar this.signedIn en su enrutador con canActiavate guard.
protector de enrutador angular: https://angular.io/guide/router#preventing-unauthorized-access