CanLoadยามป้องกันไม่ให้โหลดของโมดูลโหลดขี้เกียจ โดยทั่วไปเราใช้ตัวป้องกันนี้เมื่อเราไม่ต้องการให้ผู้ใช้ที่ไม่ได้รับอนุญาตนำทางไปยังเส้นทางใด ๆ ของโมดูลและหยุดจากนั้นดูซอร์สโค้ดของโมดูล
Angular มีcanActivate Guard ซึ่งป้องกันไม่ให้ผู้ใช้ที่ไม่ได้รับอนุญาตเข้าถึงเส้นทาง แต่ไม่ได้หยุดการดาวน์โหลดโมดูล ผู้ใช้สามารถใช้คอนโซลนักพัฒนาของ Chrome เพื่อดูซอร์สโค้ด CanLoad Guard ป้องกันไม่ให้ดาวน์โหลดโมดูล
อันที่จริงCanLoadป้องกันโมดูลที่จะโหลด แต่เมื่อโหลดโมดูลแล้วCanLoad guard จะไม่ทำอะไรเลย สมมติว่าเราได้ป้องกันการโหลดโมดูลโดยใช้CanLoad guard สำหรับผู้ใช้ที่ไม่ได้รับการพิสูจน์ตัวตน เมื่อผู้ใช้ล็อกอินแล้วโมดูลนั้นจะสามารถโหลดได้และเราจะสามารถนำทางพา ธ เด็กที่กำหนดค่าโดยโมดูลนั้นได้ แต่เมื่อผู้ใช้ออกจากระบบผู้ใช้ยังคงสามารถนำทางพา ธ เด็ก ๆ เหล่านั้นได้เนื่องจากโมดูลโหลดแล้ว ในกรณีนี้หากเราต้องการปกป้องเส้นทางเด็กจากผู้ใช้ที่ไม่ได้รับอนุญาตเราจำเป็นต้องใช้CanActivate guard ด้วย
ใช้CanLoadก่อนโหลด AdminModule:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
หลังจากโหลด AdminModule แล้วในโมดูล AdminRouting เราสามารถใช้CanActiveเพื่อปกป้องเด็กจากผู้ใช้ที่ไม่ได้รับอนุญาตเช่นร้อง:
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivate
ในสถานการณ์ข้างต้นจะมีความแตกต่างอย่างไร