Angular 2防止非身份验证用户访问路由和子级

黑洞银河

我们的项目结构如下:

  • AppComponent
    • 导航组件
    • LoginComponent

用户使用名为Firebase的表单进行身份验证之后,必须将用户重定向到仅登录用户可以访问的部分。

  • AccountComponent
    • ProfileComponent
    • FilesComponent

如您所见,帐户组件有两个子代。

我正在寻找一种适当的方法来防止未经身份验证的用户访问我网站的受保护区域,并且不知道是否必须在组件(appComponent?AccountComponent?该组件之一的OnInit吗?)中调用authService 。或在路由定义中使用CanActivate或CanActivateChild?

梅哈里

使用CanActivate Route Guard。

假设用户通过身份验证后的路由为http:// localhost:3000 /#/ dashboard

如果用户未通过身份验证,则可以通过以下方法防止仪表板路由(与AccountComponent及其子级有关)被访问。

在您的路线上:

{ path: 'dashboard',
    canActivate: [ AuthService ],
    component: AccountComponent,
    children: [
      ProfileComponent,
      FilesComponent
    ]
  }

并从身份验证服务中实现CanActivate:

@Injectable()
export class AuthService implements CanActivate {


    isAuthenticated(): boolean{
        // auth logic
    }

    canActivate(): boolean{
        const isAuth = this.isAuthenticated();
        if(!isAuth){
        //if not authenticated do something. e.g redirect to login  page
            this._router.navigate(['','/login'])
        }
        return isAuth;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Angular2:阻止经过身份验证的用户访问特定路由

Angular 2令牌和身份验证

Angular 2 UI路由器身份验证

带有子路由的Angular 2身份验证

基本身份验证 Angular2(非 CORS)

在Angular2和Firebase中进行用户身份验证后进行重定向

使用拦截器进行身份验证时如何防止 Angular 显示路由

Angular 2和.NET Web API身份验证

Angular 2错误访问路由器参数

Angular和Firebase身份验证

Angular 2 Firebase身份验证

Angular 2 AuthGuard + Firebase身份验证

Angular 2中的身份验证流程

Angular-Auth Guard阻止授权用户通过直接URL访问身份验证页面

如何允许任何用户使用Laravel JWT身份验证访问路由?

为新路由器设置身份验证Angular 2(> = rc1)

Angular JS和SpringBoot,通过身份验证后获取用户

在Laravel 5.1和Angular JS(JWT身份验证)中记住用户并忘记密码功能

无法读取Angular和Firebase身份验证中未定义的属性“用户”

Angular 2 前端 django 2 REST 框架后端用户身份验证

Angular 2-对父级和子级路由使用相同的解析器

通过Angular 2访问Windows经过身份验证的Web API,而无需登录提示

Angular Firebase:访问字段地图以进行身份验证

Angular 5身份验证

Angular 2身份验证:注销停留在用户页面中

Angular 2(4/5)检查用户是否经过身份验证,最佳做法

在Angular2中加载Appcomponent之前的用户身份验证

如何通过 Angular 2+ / NodeJS API 对用户进行身份验证

使用angular从Firebase身份验证中删除用户