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.
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;
  }
}
Guard Module
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

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 { }
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
 
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

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 {}
{QUOTE]
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 });