我开发我有一个用户区和管理区的应用程序。我已将这些分离为独立的Angular 2模块。我已经成功实现了延迟加载,因此只有在用户请求'/ admin'时才能加载管理模块。安全地护卫懒加载模块(角2)
从角2文档,我看到,我可以指定一个 “canLoad” 后卫,像这样:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AdminGuard]
}
和实施AdminGuard类中的函数canLoad像这样:
canLoad(route: Route): boolean {
return this.authService.isAdmin();
}
(其中isAdmin()可以对后端API的调用这将返回当前用户或类似的东西)的作用
但是,这实际上阻止任何非管理员从加载AdminModule?除非我误解,否则所有这些代码都位于客户端,那么是否有任何事情可以阻止客户端修改“canLoad”方法,以便始终返回true?像这样:
canLoad(route: Route): boolean {
return true;
}
因此允许客户端加载他们想要的任何模块。
显然给后端的API,需要管理员状态的任何呼叫都将受到保护,但它似乎是任何用户都可以查看管理界面,这只是似乎有点怪我。有人可以帮我清楚吗?
这不是真正的问题答案。它确实链接到一个很好的对话。到目前为止,我在这个主题上找到的信息未能确定具有此功能的明确理由,或者无法解决此问题。几分钟前我发布了这个问题:https://stackoverflow.com/questions/47613907/ – BBaysinger