2016-11-29 19 views
5

Tôi biết rằng chúng tôi có thể nhóm các tuyến đường nằm trong một mô-đun. Giống như:Angular2 CanActivate bảo vệ cho tất cả các tuyến trừ một

canActivate: [AuthGuard], 
    children: [ 
     { 
     path: '', 
     children: [ 
      { path: 'crises', component: ManageCrisesComponent }, 
      { path: 'heroes', component: ManageHeroesComponent }, 
      { path: '', component: AdminDashboardComponent } 
     ], 
     } 

Nhưng tôi nên thêm bảo vệ đó vào tệp định tuyến của mỗi mô-đun. Và tôi có nhiều người trong số họ.

Tôi muốn người dùng không thể đi đến bất kỳ tuyến đường nào ngoại trừ một (tuyến đường đăng nhập) nếu anh ta không được ủy quyền.

Cách đúng để thêm bảo vệ cho tất cả chúng là gì ??

Trả lời

4

Bạn có thể sử dụng một tuyến đường mẹ con đường trống componentless với bảo vệ

{ path: '', canActivate: [AuthGuard], children: [ 
    { 
    path: '', 
    children: [ 
     { path: 'crises', component: ManageCrisesComponent }, 
     { path: 'heroes', component: ManageHeroesComponent }, 
     { path: '', component: AdminDashboardComponent } 
    ], 
    } 
} 

và trong việc kiểm tra bảo vệ nếu người dùng đang đăng nhập. Nếu chưa đăng nhập và các tuyến đường hiện tại là login sau đó vẫn cho phép nó .

+1

Điều gì xảy ra nếu tất cả các tuyến đường con trong các tệp khác ?? Tất cả các mô đun đều có các tệp định tuyến riêng của chúng. –

+0

Điều đó vẫn hoạt động. Tôi chưa tự mình sử dụng nó. Nếu nó không hoạt động, bạn có thể thử thêm bảo vệ vào 'canActivateChild'. –

+0

Điểm của đường dẫn rỗng không có gì bên trong là gì? Tại sao không chỉ thêm trẻ em vào đường dẫn bên ngoài trực tiếp? Ngoài ra, tại sao bạn sử dụng canActivate thay vì canActivateChildren? – Aides

Các vấn đề liên quan