默认情况下,角度保护路由

时间:2017-10-31 01:14:05

标签: angular

我有一个应用程序,我的大多数路线都需要保护(登录)。是否可以添加默认路由防护和"白名单"应该开放的路线?

2 个答案:

答案 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