Estoy usando el último componente de autenticación de AWS-Amplify. Puede iniciar sesión correctamente, pero después de iniciar sesión necesito enviar la ruta a otra URL que no puedo lograr, manteniendo la misma URL después de iniciar sesión. PERO necesito establecer una URL personalizada donde redirija automáticamente si un usuario iniciar sesión con éxito.
Nota: no estoy usando el paquete aws-amplify-angular , estoy usando estos paquetes,
"@aws-amplify/ui-angular": "^2.4.4", "aws-amplify": "^4.3.21", También verifiqué esta import {AuthenticatorService} from '@aws-amplify/ui-angular'; service pero aquí no encontré ninguna respuesta con tipo observable, creo que es por eso que no obtengo ningún evento o algo al instante después de que el usuario inicie sesión correctamente. Necesito enrutar inminentemente después de un inicio de sesión exitoso. Así que necesito un evento para poder hacer eso.
Mis main.ts :
import { Amplify } from 'aws-amplify' import awsmobile from './aws-exports' Amplify.configure(awsmobile) auth.component.html : [no hay código en ts ]
<amplify-authenticator [signUpAttributes]="['email']"></amplify-authenticator>y las rutas configuradas así,
const routes: Routes = [ { path: 'home', component: HomeComponent, canActivate: [AuthGuard] }, { path: 'auth', component: AuthComponent }, { path: '', redirectTo: 'home', pathMatch: 'full' } ];No obtuve ninguna buena solución con el uso de estos paquetes. Por favor, ayuda con este problema o me perdí algo en mi configuración.
No quería usar el paquete aws-amplify-angular pero necesito hacerlo porque no existe una buena solución, sin este paquete traté de usar ganchos angulares porque cuando se ejecuta la detección de cambios puedo obtener estados authenticated y unauthenticated de AuthenticatorService que provino de import { AuthenticatorService } from '@aws-amplify/ui-angular'; pero usando ganchos ( AfterContentChecked , AfterViewChecked ) funciona a veces, a veces no y a veces se producen errores.
[No usé los dos ganchos a la vez, probé por separado]
Entonces, finalmente necesito instalar aws-amplify-angular para usar AmplifyService y luego hago estos cambios a continuación,
constructor(private router: Router, private amplifyService: AmplifyService) { } ngOnInit() { this.amplifyService.authStateChange$.subscribe(({state, user}) => { if (state === 'signedIn') { this.router.navigate(['/home']) } }) } No olvide agregar AmplifyService para colocar la matriz de proveedores en app.module.ts .