Tôi có một angular2 bảo vệ tích cực mà xử lý nếu người dùng không đăng nhập, chuyển hướng nó vào trang đăng nhập:Làm thế nào để áp dụng bảo vệ canActivate trên tất cả các tuyến đường?
import { Injectable } from "@angular/core";
import { CanActivate , ActivatedRouteSnapshot, RouterStateSnapshot, Router} from "@angular/router";
import {Observable} from "rxjs";
import {TokenService} from "./token.service";
@Injectable()
export class AuthenticationGuard implements CanActivate {
constructor (
private router : Router,
private token : TokenService
) { }
/**
* Check if the user is logged in before calling http
*
* @param route
* @param state
* @returns {boolean}
*/
canActivate (
route : ActivatedRouteSnapshot,
state : RouterStateSnapshot
): Observable<boolean> | Promise<boolean> | boolean {
if(this.token.isLoggedIn()){
return true;
}
this.router.navigate(['/login'],{ queryParams: { returnUrl: state.url }});
return;
}
}
tôi phải thực hiện nó trên mỗi tuyến đường như:
const routes: Routes = [
{ path : '', component: UsersListComponent, canActivate:[AuthenticationGuard] },
{ path : 'add', component : AddComponent, canActivate:[AuthenticationGuard]},
{ path : ':id', component: UserShowComponent },
{ path : 'delete/:id', component : DeleteComponent, canActivate:[AuthenticationGuard] },
{ path : 'ban/:id', component : BanComponent, canActivate:[AuthenticationGuard] },
{ path : 'edit/:id', component : EditComponent, canActivate:[AuthenticationGuard] }
];
Có bất kỳ cách nào tốt hơn để triển khai tùy chọn canActive mà không thêm nó vào mỗi đường dẫn.
Điều tôi muốn là thêm nó trên tuyến đường chính và nó sẽ áp dụng cho tất cả các tuyến đường khác. Tôi đã tìm kiếm rất nhiều, nhưng tôi không thể tìm thấy bất kỳ giải pháp hữu ích
Cảm ơn
Cảm ơn, Nó hoạt động ngay bây giờ –
Rất vui khi được nghe :) Cảm ơn bạn đã phản hồi. –
@ GünterZöchbauer Tôi luôn đọc lời khuyên của bạn. Cảm ơn nhiều!! Nhưng trong trường hợp của tôi điều này không hoạt động. CanActive không hoạt động trong định tuyến giữa trẻ em. Tôi sử dụng canActivateChild. Nó hoạt động. – Smiranin