Javascript 如何获取经过身份验证的用户的数据/id?

Javascript 如何获取经过身份验证的用户的数据/id?,javascript,angular,typescript,ionic-framework,ionic4,Javascript,Angular,Typescript,Ionic Framework,Ionic4,我正在努力解决一个问题:我的代码应该如何知道哪些是经过身份验证的用户的数据,或者如何获取这些数据 我已经完成了身份验证流程,这意味着我可以使用令牌成功注册和登录。我仍然以刷新页面的方式登录,我的令牌仍然存储在ionic/storage中 我认为这实际上应该足以获得用户的特定用户数据/已验证数据的权限。但我不知道怎么做 当我从列表中获取任何用户并查看其配置文件时,我只需简单地传递他的id即可。如何通过单击“配置文件”选项卡获得经过身份验证的用户的id 我不是来自另一个可以获取id的页面。我还放置了

我正在努力解决一个问题:我的代码应该如何知道哪些是经过身份验证的用户的数据,或者如何获取这些数据

我已经完成了身份验证流程,这意味着我可以使用令牌成功注册和登录。我仍然以刷新页面的方式登录,我的令牌仍然存储在ionic/storage中

我认为这实际上应该足以获得用户的特定用户数据/已验证数据的权限。但我不知道怎么做

当我从列表中获取任何用户并查看其配置文件时,我只需简单地传递他的id即可。如何通过单击“配置文件”选项卡获得经过身份验证的用户的id

我不是来自另一个可以获取id的页面。我还放置了我的auth.service代码,如果这对您有帮助的话,因为令牌而帮助我,但重要的是最后两个片段,我认为是这样的

这是我的代码:

auth.service.ts

最新答案 您需要像这样将用户id保存到存储器中

this.storage.set(USER_ID, this.validateId(res['user_id']))
在当前用户配置文件组件中,获取此用户id并将其传递给this.userService.getUserDetails方法,如下所示:

const currentUserId = this.storage.get(USER_ID); 

this.userService.getUserDetails(currentUserId).subscribe(user => { 
  console.log('user data', user);
});
旧答案 假设任何用户的配置文件都位于同一路由上,例如:profile/:userId,包括当前经过身份验证的用户

您只需在activatedRoute.paramMap的订阅中添加此调用

试一试


让我解释一下发生了什么,当您输入此组件时,会调用ngOnInit钩子并按id获取用户,并且在您尝试打开当前经过身份验证的用户后,仅调用activatedRoute.paramMap subscription的回调,而不是所有的ngOnInit方法。

我没有解决实际问题,您的意思是在身份验证成功后无法通过id获取另一个用户吗?我需要知道通过id获取用户的端点在使用它之前需要身份验证,对吧@AbdelrhmanElSayed没有另一个工作正常的用户。但是如何只获取经过身份验证的用户。因此,如果我以user1身份登录,如何获取此身份验证的数据。用户1?api端点是http://1234/users/{id}/如果用户是经过身份验证的用户,则具有更新该用户的权限。因此,它不会获取任何有效的用户,而只是获取经过身份验证的用户。比如当我查看自己的个人资料时。这个电话的回报是什么?@AbdelrhmanElSayed response?=>它只需要一个id。然后你返回的数据是用户信息,如用户名、电子邮件等。我想在自己的配置文件视图中显示身份验证用户的数据。我知道了,当你打开任何用户的配置文件,然后尝试打开当前用户配置文件时,没有任何更改,对吗?不,很遗憾,它不起作用。我得到的错误是id不是一个数字。但是我也从来没有得到过id,因为我不是来自另一个页面,比如从user.page->detail-user.page,在那里我可以传递像“[routerLink]=['/','friendset',friends.id]`这样的id,就像Instagram的例子一样。我刚刚登录,我想进入我的个人资料选项卡查看我的数据。或者我必须在authService中创建currentUserID吗?要获取当前用户数据,我们应该有当前用户id,您有当前用户id吗?我想这样存储它。export const USER_ID='USER_ID';this.storage.setUSER_ID,res[this.validateId'user_ID';将其存储到存储器中,当您输入/profile route时,再次从存储器中获取用户id并发出请求,
 information = null;
 id: number;


      ngOnInit() {
        // How to get just the authenticated api?
        this.activatedRoute.paramMap.subscribe(params => { 
         this.id = validateId(params.get('id'));
     });

        function validateId(id: any): number {
           return parseInt(id);
    }

     // Get the information from the API
    this.userService.getUserDetails(this.id).subscribe(result => {
      this.information = result;
     });
   }
this.storage.set(USER_ID, this.validateId(res['user_id']))
const currentUserId = this.storage.get(USER_ID); 

this.userService.getUserDetails(currentUserId).subscribe(user => { 
  console.log('user data', user);
});
ngOnInit() {
  // How to get just the authenticated api?
  this.activatedRoute.paramMap.subscribe(params => { 
    this.id = validateId(params.get('id'));

    // Get the information from the API
    this.userService.getUserDetails(this.id).subscribe(result => {
      this.information = result;
    });
  });

  function validateId(id: any): number {
    return parseInt(id);
  }
}