Bonjour,
Je sollicite votre aide pour une situation dont je ne comprends pas.
l'objectif est , en cas de non connection,^d' être rediriger vers la page de connection.
Pour cela, j'utilise guard.
Guard Module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //const LOGIN_URL = '/auth/login'; const LOGIN_URL = '/login'; @Injectable({ providedIn: 'root', }) export class AuthenticationGuard implements CanActivate { constructor(private router: Router, private credentialsService: CredentialsService) {} canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { if (this.credentialsService.isAuthenticated()) { return true; } log.debug('Not authenticated, redirecting and adding redirect url...'); console.log('before goiing to login form'); this.router.navigate([LOGIN_URL], { queryParams: { redirect: state.url }, replaceUrl: true }); console.log('after goiing to login form'); return false; } }
Routing
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 import { AuthRoutingModule } from './auth-routing.module'; @NgModule({ imports: [AuthRoutingModule ], }) export class AuthModule {}
Routing Module
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 const routes: Routes = [ { path: '', component: AdminLayoutComponent, canActivate: [AuthenticationGuard], //canActivate: [AuthGuard], //canActivateChild: [AuthGuard], children: [ { path: '', redirectTo: 'home', pathMatch: 'full' }, { path: 'home', component: HomeComponent, data: { title: 'Home', titleI18n: 'Home' }, }, ], }, { //path: 'auth', path: 'login', component: AuthLayoutComponent, children: [ { path: 'login', redirectTo: '/signin', pathMatch: 'full' }, { path: 'signin', component: SigninComponent, data: { title: 'Login', titleI18n: 'login' } }, ], }, { path: '**', redirectTo: '' }, ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], providers: [], }) export class RoutesRoutingModule { }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 import { NgModule } from '@angular/core'; import { SharedModule } from '../@shared'; import { RoutesRoutingModule } from './routes-routing.module'; import { HomeComponent } from '../modules/home/home.component'; import { SigninComponent } from '../modules/signin/signin.component'; //import { RegisterComponent } from '../modules/register/register.component'; //const COMPONENTS = [HomeComponent,SigninComponent,]; // RegisterComponent]; const COMPONENTS = []; const COMPONENTS_DYNAMIC = []; @NgModule({ imports: [SharedModule, RoutesRoutingModule], declarations: [...COMPONENTS, ...COMPONENTS_DYNAMIC], //exports: [RoutesRoutingModule] 25/08/2020 //entryComponents: COMPONENTS_DYNAMIC, }) export class RoutesModule {}
App Module
{QUOTE]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 import { RoutesModule } from './routes/routes.module'; @NgModule({ declarations: [AppComponent], imports: [ RoutesModule, ], }) export class AppModule {}
a l'execution, j'ai une page blanche avec dans la console les messages
Not authenticated, redirecting and adding redirect url...
before goiing to login form
after goiing to login form
[/QUOTE]
cela voudrait dire que le guard s'execute mais à la ligne ne fait peute rien ou ne trouve pas url
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 const LOGIN_URL = '/login'; this.router.navigate([LOGIN_URL], { queryParams: { redirect: state.url }, replaceUrl: true });
Partager