1
我有一個登錄系統,當且僅當我們登錄時,才能訪問模塊。如果我們不是,並且會話已過期,那麼我會重定向到登錄頁面,並保存會話存儲我們所在的頁面,因此如果用戶嘗試再次登錄,他會回到他所在的頁面。 但是,我有我的後衛一個問題:Angular2衛士和路由器
@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尚未初始化,因此「/」每次都返回。如果我強迫它等於我的路線路徑之一,那麼它工作得很好。任何想法如何解決這個問題?
乾杯!
編輯:
以下是我在我的應用程序,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