我是Angular的新手。我已经介绍了一些Angular教程,并且作为后端开发人员,我想知道用户可以使用伪造的JWT导航到受保护的模板是如何被接受...在我的应用程序中,我创建了/dashboard
,其中包括guard。 / p>
{ path: 'dashboard', component: HomeComponent, canActivate: [AuthGuard]}
我的守卫方法的主体:
canActivate(): boolean {
if (this.authenticationService.isAuthenticated()) {
return true;
} else {
this.router.navigate(['/']);
return false;
}
}
isAuthenticated 是一种服务方法(我将angular2-jwt
用作jwtHelper
):
isAuthenticated(): boolean {
const token = localStorage.getItem('token');
if (!token) { return false; }
return !this.jwtHelper.isTokenExpired(token);
}
我可以将任何JWT放置到本地存储中并通过,因为它仅检查JWT是否具有有效格式。即使我添加了禁止从服务器获取数据的拦截器,用户仍然可以导航到受保护的模板。我不接受该解决方案。最好的方法是什么?是否应该向服务器请求模板之间的所有导航(例如/dashboard
-> /admin
,以检查JWT是否有效?如果是,如何实现呢?除非使我的最佳实践是什么?受保护的模板对于经过身份验证的用户是不可见的,并使其在伪造的JWT上不可侵犯?
答案 0 :(得分:0)
您是否调查过JWT的索赔?您可以在其中放置元数据,以告诉您有关用户访问权限的信息,您可以使用这些元数据来确定用户是否应有权访问路由。参见:https://jwt.io/introduction/