У меня есть система входа в систему, которая дает доступ к модулю тогда и только тогда, когда мы вошли в систему. Если мы этого не сделали, и наш сеанс истек, то я перенаправляюсь на страницу входа и сохраняю хранилище сеанса, где мы были, поэтому, если пользователь попытается снова войти в систему, он возвращается к странице, на которой он был. Однако, я имею вопрос в настороже:Angular2 Guard и маршрутизатор
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private _router: Router, private _authUtils: AuthUtils) {}
canActivate(): boolean {
if(this._authUtils.isLogged()) {
return true
}
else {
window.sessionStorage.setItem('previousPage', this._router.url)
let link = ["/login", { previous: "true" }]
this._router.navigate(link)
return false
}
}
}
Проблема исходит из того, что this._router.url еще не инициализирован, и, таким образом, возвращает «/» каждый раз. Если я заставляю его быть равным одному из моих маршрутов, то он отлично работает. Любая идея, как я могу исправить эту проблему?
Cheers!
EDIT:
Вот что я имею в мое приложение-routing.module.ts:
@NgModule({
imports: [
RouterModule.forRoot([
{
path: 'myApp',
loadChildren: 'app/myApp.module#MyAppModule',
canActivate: [AuthGuard]
},
{
path: 'login',
component: LoginComponent,
data: {
name: 'login'
}
},
{
path: '**',
redirectTo: '/login',
pathMatch: 'full'
}
]
)
],
exports: [
RouterModule
]
})
export class AppRoutingModule {}
Пожалуйста, добавьте код в app.module, где вы возвещать AuthGuard. – Maxime
Что вы хотите видеть там, я имею в виду, это просто появляется у моих провайдеров: as: AuthGuard – Scipion