【问题标题】:How to get current user id angular 4?如何获取当前用户 id 角度 4?
【发布时间】:2017-10-04 01:39:38
【问题描述】:

我必须获取当前用户 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);
}

【问题讨论】:

    标签: angular typescript userid


    【解决方案1】:

    您想使用从服务调用中获得的用户 ID 到您应用中的不同组件。我希望这就是您正在寻找的。​​p>

    您可以通过三种方式做到这一点。

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

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

    【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 你能给我更多关于从后端传递令牌的解释吗?我不知道如何使用 ng2 Redux 获取 User_ID
    • 您可以使用 jwt 库在后端形成一个令牌,然后将其传递给前端,并在本地存储中保存令牌。
    • 你在后台用什么
    • developerhandbook.com/c-sharp/… 这里是如何在asp.net中使用jwt的参考
    • 顺便说一句,如果您制作此应用程序是为了学习目的,您可以将用户 ID 存储在本地存储中
    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多