我有一个应用程序,我的大多数路线都需要保护(登录)。是否可以添加默认路由防护和"白名单"应该开放的路线?
答案 0 :(得分:5)
我通常做的是为应用程序的授权部分创建父路由,并在其上设置路由保护。事实上,这条路线在其模板中只有<router-outlet></router-outlet>
的基本组件,但在该路线上击中路线保护之前,无法访问子路线。请参阅下面的示例。
const routes: Routes = [
{ path: '', redirectTo: 'app/books', pathMatch: 'full' },
{ path: 'app', component: MainComponent, canActivate: [AuthGuard], children: [
{path: 'books', component: BooksComponent },
{path: 'cars', component: CarsComponent },
{path: 'trees', component: TreesComponent }
]},
{ path: 'login', component: LoginComponent, canActivate: [NonauthGuard] }
];
在我的情况下, NonAuthGuard
提供相反的行为,并且不允许用户在获得授权时点击登录路由。
答案 1 :(得分:0)
你会使用路由器防护。关于这个主题的好文章可以在https://codecraft.tv/courses/angular/routing/router-guards/,
找到描述该方法的另一个StackOverflow。 Angular 2 Router - CanActivate Guard
还有另一个指南。 https://blog.thoughtram.io/angular/2016/07/18/guards-in-angular-2.html