Pengawal Laluan Fungsian
Lindungi laluan dengan pengawal fungsian.
Pengawal Laluan Fungsian ialah pelajaran Angular Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Angular Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Angular Academy merangkumi sejumlah 4 pelajaran.
Apakah pengawal laluan
Pengawal menentukan sama ada navigasi boleh diteruskan: melindungi laluan di sebalik pengesahan, meminta pengesahan sebelum meninggalkan borang atau mengehadkan akses mengikut peranan. Angular moden menggunakan pengawal berfungsi — fungsi biasa, bukannya kelas.
CanActivateFn
CanActivateFn mengembalikan true untuk membenarkan, false untuk menyekat, UrlTree untuk mengubah hala, atau observable/promise bagi salah satu nilai tersebut.
import { CanActivateFn } from '@angular/router';
import { inject } from '@angular/core';
export const authGuard: CanActivateFn = () => {
const auth = inject(AuthService);
return auth.isLoggedIn();
};Menyambungkan pengawal kepada laluan
Pasangkan pengawal dengan canActivate (iaitu tatasusunan, jadi anda boleh menyusun beberapa pengawal).
export const routes = [
{ path: 'dashboard', component: DashboardComponent,
canActivate: [authGuard] }
];Membuat lencongan dengan UrlTree
Memulangkan UrlTree (daripada router.createUrlTree atau parseUrl) akan menyekat dan membuat lencongan dalam satu langkah.
export const authGuard: CanActivateFn = () => {
const auth = inject(AuthService);
const router = inject(Router);
return auth.isLoggedIn() ? true : router.parseUrl('/login');
};Pengawal tak segerak
Pengawal boleh memulangkan observable — penghala menunggu nilai pertama, kemudian melengkapkannya.
export const authGuard: CanActivateFn = () => {
const auth = inject(AuthService);
return auth.checkSession$().pipe(
map(ok => ok ? true : inject(Router).parseUrl('/login'))
);
};Mengakses maklumat laluan dalam pengawal
CanActivateFn menerima ActivatedRouteSnapshot dan RouterStateSnapshot, jadi anda boleh membaca parameter, data dan URL yang cuba diakses.
export const roleGuard: CanActivateFn = (route, state) => {
const needed = route.data['role'];
const auth = inject(AuthService);
return auth.hasRole(needed);
};Pengawal canMatch
CanMatchFn menentukan sama ada takrif laluan sepadan atau tidak — berguna untuk menukar laluan berdasarkan bendera ciri atau memuatkan secara malas hanya apabila dibenarkan.
import { CanMatchFn } from '@angular/router';
export const featureGuard: CanMatchFn = () =>
inject(FeatureService).enabled('beta');Pengawal canDeactivate
CanDeactivateFn dijalankan apabila meninggalkan laluan — amat sesuai untuk pengesahan perubahan yang belum disimpan. Ia menerima tika komponen.
import { CanDeactivateFn } from '@angular/router';
export const unsavedGuard: CanDeactivateFn<FormComponent> =
(component) => component.isPristine() || confirm('Discard changes?');Menyusun beberapa pengawal
Semua pengawal dalam tatasusunan mesti membenarkan navigasi. Pengawal tersebut dijalankan bersama-sama; jika mana-mana pengawal memulangkan false atau UrlTree, navigasi disekat atau dibuat lencongan.
canActivate: [authGuard, roleGuard]
// both must passMengapa pengawal berfungsi lebih baik daripada pengawal berasaskan kelas
Pengawal berfungsi lebih ringkas: tiada kod asas @Injectable, penggunaan inject() yang mudah, boleh digubah dan boleh dibuang daripada pepohon. Antara muka CanActivate berasaskan kelas sudah tidak digunakan lagi.
Pengawal dan laluan anak
canActivateChild melindungi semua laluan anak bagi induk di satu tempat, tanpa perlu mengulangi pengawal pada setiap anak.
{ path: 'admin', canActivateChild: [authGuard],
children: [ /* all protected */ ] }Semakan Pantas
Uji pemahaman anda tentang pengawal berfungsi.
Imbas Kembali: Pengawal Laluan Berfungsi
Pengawal berfungsi mengawal navigasi menggunakan fungsi biasa.
CanActivateFn: benarkan/sekat/buat lencongan (UrlTree).CanMatchFn: tentukan sama ada laluan sepadan atau tidak.CanDeactivateFn: sahkan tindakan meninggalkan.- Gunakan
inject()untuk perkhidmatan; susun pengawal dalam tatasusunan.
Seterusnya: peristiwa penghala dan navigasi.
Pelajari HTML dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 38
- Pelajaran
- 144
Soalan Lazim
Adakah pelajaran “Pengawal Laluan Fungsian” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Angular Academy, termasuk “Pengawal Laluan Fungsian”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Angular Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Pengawal Laluan Fungsian”?
Lindungi laluan dengan pengawal fungsian. Anda berlatih Angular Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Angular Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Angular Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “Pengawal Laluan Fungsian” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Angular Academy ini?
Ya. Setiap pelajaran Angular Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Parameter Laluan dan Parameter Pertanyaan
- Penyelesai dan Data Laluan
- Pengawal Laluan Fungsian
- Peristiwa Penghala dan Navigasi