angular - Angular 6:如何保护帐户激活链接的路由
问题描述
我有一个从后端生成到电子邮件的链接:
例如:localhost/register/profile?id=39&token=IGCHSXtSzlHzGFsZPt
当用户点击链接时,用户将重定向到个人资料页面进行编辑。在重定向到页面之前,我需要验证令牌是否存在于数据库中。
我有 api 来验证令牌:
例如:localhost/registration/verifyConfirmationToken?id=39&token=IGCHSXtSzlHzGFsZPt
verifyToken(id:string, token: string) {
const params = new HttpParams().set('a', id).set('b', token);
this.base_url = environment.MYAPI_REST_API_URL+"/registration/application/verifyConfirmationToken?a="+id+"&b="+token;
return this.http.get(this.base_url)
.pipe(map(user => {
//return null if token not exist
return user;
}));
}
如果令牌存在则响应(如果令牌不存在则返回 null):
{
"statusId": 4,
"createdBy": 0,
"creationTime": "2018-09-27 22:08:32",
"updatedBy": 0,
"updateTime": "2018-09-28 00:46:30",
"id": 39,
"email": "test@gmail.com",
"address": "noods",
"city": "bahyd",
"postcode": "70324324",
"active": true
}
问题是如果我使用随机令牌放置链接,用户仍然可以查看个人资料页面。我怎样才能防止这种情况?
解决方案
你可以看看 CanActivate 守卫:https ://angular.io/api/router/CanActivate
推荐阅读
- jdbc - 未加载 Logstash 'com.mysql.jdbc.Driver'
- python - 在python中将接收到的数据转换为二进制形式
- macos - Applescript 重命名应用程序文件夹中的文件
- networking - NAT 上的 Google Cloud VPN
- winapi - Windows中的命名管道,FILE_FLAG_OVERLAPPED和PIPE_NOWAIT之间的区别
- linux - 尽管使用 gcc 链接器,但仍获得对汇编代码“_printf”错误的未定义引用
- powershell - 使用 select-String 解析日志文件
- go - 如何使用 Golang 正确发送 RPC 调用以获取智能合约所有者?
- rangeslider - 如何禁用 RangeSlider asp.net MVC razor c#?
- php - 如果页面刷新,如何停止 rand() 生成其他整数?