CanLoad गार्ड लेज़ी लोडेड मॉड्यूल की लोडिंग को रोकता है। हम आम तौर पर इस गार्ड का उपयोग तब करते हैं जब हम अनधिकृत उपयोगकर्ता को मॉड्यूल के किसी भी मार्ग पर नेविगेट नहीं करना चाहते हैं और तब भी रोकते हैं, तब भी मॉड्यूल का स्रोत कोड देखें।
कोणीय, कैनेटिक्ट गार्ड प्रदान करता है , जो अनधिकृत उपयोगकर्ता को मार्ग तक पहुँचने से रोकता है। लेकिन यह मॉड्यूल को डाउनलोड होने से नहीं रोकता है। स्रोत कोड को देखने के लिए उपयोगकर्ता क्रोम डेवलपर कंसोल का उपयोग कर सकता है। CanLoad Guard मॉड्यूल को डाउनलोड होने से रोकता है।
दरअसल, CanLoad लोड होने वाले मॉड्यूल की सुरक्षा करता है लेकिन एक बार मॉड्यूल लोड हो जाता है तो CanLoad गार्ड कुछ नहीं करेगा। मान लीजिए कि हमने अनधिकृत उपयोगकर्ता के लिए CanLoad गार्ड का उपयोग करते हुए एक मॉड्यूल लोडिंग की रक्षा की है। जब उपयोगकर्ता लॉग-इन करता है, तो वह मॉड्यूल लोड होने के लिए लागू होगा और हम उस मॉड्यूल द्वारा कॉन्फ़िगर किए गए बच्चों के पथों को नेविगेट करने में सक्षम होंगे। लेकिन जब उपयोगकर्ता लॉग-आउट हो जाता है, तब भी उपयोगकर्ता उन बच्चों के मार्गों को नेविगेट करने में सक्षम होगा, क्योंकि मॉड्यूल पहले से ही लोड है। इस मामले में अगर हम अनधिकृत उपयोगकर्ताओं से बच्चों के मार्ग की रक्षा करना चाहते हैं, तो हमें CanActivate गार्ड का उपयोग करने की भी आवश्यकता है ।
व्यवस्थापक लोड करने से पहले CanLoad का उपयोग करें :
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
AdminModule को लोड करने के बाद, AdminRout मॉड्यूल में हम अनधिकृत उपयोगकर्ताओं की तरह चिल्ड को बचाने के लिए CanActive का उपयोग कर सकते हैं :
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivateउपरोक्त परिदृश्य में उपयोग करता हूं , तो क्या अंतर होगा?