如何获取当前用户id angular 4?

How to get current user id angular 4?

我必须获取当前用户 ID 才能在我的应用程序的不同部分使用它..

login.component.ts:

onSignin(form: NgForm){
const UserName = form.value.UserName;
const Password = form.value.Password;
this.authService.signinUser(UserName,Password).map(res => res.json())
 .subscribe(
   data => {
     if (data.Id == 0){
     this.invalid=true;
    }
    else{
      localStorage.setItem('isLoggedin', 'true');
      this.router.navigate(['/calendar']);
      console.log('Ok');
   }})}

auth.service.ts:

signinUser(UserName,Password): Observable<any>{
  return this.http.get('http://api.##.com/api/security/signin?username='+UserName+'&password='+Password);
}

您可以从后端传递包含 id 的令牌,或者您可以使用 redux store 将 id 存储在前端以供您的应用程序使用。下面是 angular 中 ng2 Redux 包的 link。 https://www.npmjs.com/package/ng2-redux 还有一个选项可以将它保存到本地存储,但我不喜欢 it.Or 前端可以这样使用session storage来保存数据

在您的登录组件文件中保存会话使用此代码

sessionStorage.setItem('id', data.id);
retrieving from the session//
var data = sessionStorage.getItem('id');
console.log(data) to see the id in the console

您想使用从服务调用中获得的用户 ID 来访问您应用中的不同组件。希望这就是您要找的。

您可以通过三种方式执行此操作。

  1. Shared Services - 利用共享服务将用户 ID 添加到服务中的用户 ID 主题,并在登录时设置。下次更改用户 Id 时,将通知观察组件。
  2. NGRX - 更简洁的共享服务实现,如果您的应用程序很大,我建议您使用它。
  3. 本地存储 - 这是非常值得商榷的,因为它也取决于用户的判断力。在组件之间设置和获取用户 ID。

请注意,如果用户在 NGRX 或共享服务中随时硬刷新页面,数据将会丢失,您可能需要使用本地存储进行全面校对。