我们的项目结构如下:
用户使用名为Firebase的表单进行身份验证之后,必须将用户重定向到仅登录用户可以访问的部分。
如您所见,帐户组件有两个子代。
我正在寻找一种适当的方法来防止未经身份验证的用户访问我网站的受保护区域,并且不知道是否必须在组件(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] 删除。
我来说两句