فرید ذوالقدر
فرید ذوالقدر
خواندن ۱ دقیقه·۲ سال پیش

مفهوم canActivate ، canLoad و canMatch در محافظت از Route در انگولار

سلام
در این مقاله سعی دارم درباره guards انگولار و انواع گاردها صحبت کنم. ممنون میشم تا آخر مقاله با من همراه باشید:

canActivate

برای محافظت از Route از canActivate ما استفاده می کنیم ما این ذهنیت که از لود شدن ماژولی که در آن نام برده می شود جلوگیری نمی کنید و آن ماژول را نیز اجرا می کند.

canActivate(): Promise<boolean | UrlTree> { if (localStorage.getItem(&quottoken&quot)) { const tree:UrlTree=this.router.parseUrl('/'); return tree; } else { return true; } }


canLoad

مانند canActivate برای برای محافظت از Route از canLoad استفاده می کنیم با این تفاوت که ماژولی که در آن فراخوانی می شود اجرا نمی کند.

canLoad(): Promise<boolean | UrlTree> { if (localStorage.getItem(&quottoken&quot)) { return true; } else { const tree:UrlTree=this.router.parseUrl('/login'); return tree; } }
وقتی از canLoad استفاده می کنید.
وقتی از canLoad استفاده می کنید.


وقتی از canActivate استفاده می کنید.
وقتی از canActivate استفاده می کنید.


canMatch

گارد CanMatch کنترل می‌کند که آیا می‌توانیم از مسیر استفاده کنیم و به عنوان یک اثر جانبی، آیا می‌توانیم کد را دانلود کنیم یا خیر. علاوه بر این، هنگامی که یکی از گاردهای تعریف شده false را برگرداند، مسیر رد می شود و مسیرهای دیگر به جای آن پردازش می شوند.

const routes: Routes = [ { path: 'todos', canMatch: [() => inject(FeatureFlagsService).hasPermission('todos-v2')], loadComponent: () => import('./todos-page-v2/todos-page-v2.component') .then(v => v.TodosPageV2Component) }, { path: 'todos', loadComponent: () => import('./todos-page/todos-page.component') .then(v => v.TodosPageComponent) }];

در انتها به توجه خوبتون به این مقاله نهابت تشکر دارم.

:))

محافظت routeangular
شاید از این پست‌ها خوشتان بیاید