ルートをガードするためにCanActivateを実装し、ユーザーがログインしていない場合は/ loginに移動しますが、POSTリクエストでリダイレクトされて404エラーになります。Angular2 Router - canActivateがポストリクエストでリダイレクトしています
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate() {
console.log("canActivate : AuthGuard");
if (localStorage.getItem('currentUser')) {
// logged in so return true
return true;
}
// not logged in so redirect to login page
this.router.navigate(['/login']);
return false;
}
}
私はそれが適切にリダイレクトされAuthGuardを削除した場合。どんな体が私を助けることができますか?
app.routes.ts
import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import {HomeComponent} from './home/home.component';
import {DashBoardComponent} from './dashboard/dashboard.component';
import { AuthGuard } from './guards/auth.guard';
const appRoutes: Routes = [
{
path: 'login',
component: LoginComponent
},
{
path: 'home',
component: HomeComponent,
canActivate: [AuthGuard],
children: [
{ path: 'dashboard', component: DashBoardComponent }
]
}
];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);
app.module.ts
import { LocationStrategy, HashLocationStrategy } from '@angular/common';
@NgModule({
imports: [ BrowserModule ,routing , CKEditorModule,FormsModule, HttpModule, ReactiveFormsModule, TagInputModule],
declarations: [ AppComponent , DashBoardComponent,LoginComponent,HomeComponent],
providers: [AuthGuard, AuthenticationService, {provide: LocationStrategy, useClass: HashLocationStrategy}],
bootstrap: [ AppComponent]
})
export class AppModule { }
app.component.ts CHEに
import { Component, OnInit } from '@angular/core';
import {DashBoardComponent} from './dashboard/dashboard.component';
import {LoginComponent} from './login/login.component';
import {HomeComponent} from './home/home.component';
@Component({
selector: 'app',
template: `<router-outlet></router-outlet>`,
precompile: [LoginComponent]
})
export class AppComponent implements OnInit {
ngOnInit() {
console.log("checkking ");
}
}
サーバーのサポートHTML5 pushStateしていますか?あなたは 'HashLocationStrategy'を有効にして問題を再現することができますか? –
また、HashLocationstrategyを追加した後でも、コンポーネントコードとrouterLinkの部分を含めることができます。 – refactor
、同じ問題! –