角度6:如何保护帐户激活链接的路径

时间:2018-10-01 04:37:28

标签: angular angular5 angular6

我有一个从后端生成到电子邮件的链接:

  

例如:localhost / register / profile?id = 39&token = IGCHSXtSzlHzGFsZPt

当用户单击链接时,用户将重定向到个人资料页面进行编辑。重定向到页面之前,我需要验证令牌是否存在。

我有API来验证令牌:

  

例如:   本地主机/注册/ 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
}

问题是,如果我使用随机令牌放置链接,用户仍然可以查看个人资料页面。我该如何预防?

1 个答案:

答案 0 :(得分:0)

您可以看一下CanActivate保护器:https://angular.io/api/router/CanActivate