Angular 11 - 登录后显示用户电子邮件

Posted

技术标签:

【中文标题】Angular 11 - 登录后显示用户电子邮件【英文标题】:Angular 11 - Display user email after login 【发布时间】:2021-08-10 10:42:42 【问题描述】:

我正在使用 Angular 11 和 .NET Core 以及 Web API JWT 令牌身份验证来创建用户登录。我成功创建了用户登录并成功重定向到仪表板,但我不知道如何在仪表板的工具栏中显示登录的用户电子邮件。 我必须在成功登录后这样做。

loginservice.ts:

import  Component, OnInit  from '@angular/core';
import  LoginService  from 'src/app/services/login.service';
    
@Component(
      selector: 'app-login',
      templateUrl: './login.component.html',
      styleUrls: ['./login.component.css']
)
export class LoginComponent implements OnInit 
    
    credentials=
        useUserID:'',
        useUserPassword:''
    
    constructor(private loginService:LoginService)  
    
    ngOnInit(): void 
    
    onSubmit()
      if((this.credentials.useUserID!='' && this.credentials.useUserPassword!='')&& (this.credentials.useUserID!=null && this.credentials.useUserPassword!=null ))
        
          console.log("We have to submitt the form");
    
          //token generate
          this.loginService.generateToken(this.credentials).subscribe(
            (response:any)=>
              //success (parameter) response:Object
              console.log(response.token);
              this.loginService.loginUser(response.token)
              window.location.href="/dashboard"
            ,
            //error
            error=>
            console.log(error);
            
          )
          
    
        else
        console.log("Field are empty");  
      
    

logincomponent.ts:

import  HttpClient  from '@angular/common/http';
import  Injectable  from '@angular/core';
    
@Injectable(
      providedIn: 'root'
)
export class LoginService 
    
      url="http://"
    
      constructor(private http:HttpClient)  
    
      //calling the server to generate token
     generateToken(credentials:any)
        return this.http.post(`$this.url/token`,credentials,responseType:"text")
      
    
      //for login user
      loginUser(token)
      
        localStorage.setItem("token",token)
        return true;
    
      
    
      //to check that user login or not
    
      isLoggedIn()
      
        let token=localStorage.getItem("token");
        if(token==undefined || token=== '' || token==null)
        
          return false;
    
        
        else 
          return true;
        
      
      //To logout the user
      logout ()
      
        localStorage.removeItem('token')
        return true;
      
    
      //for gettinh the token
      getToken()
      
        return localStorage.getItem('token')
      

【问题讨论】:

【参考方案1】:

首先通过npm i jwt-decode安装包jwt-decode

像这样import jwt_decode from 'jwt-decode';将它导入到你的组件中

然后从本地存储加载 JWT Token 并解码:

token = localStorage.getItem("token");
email = jwt_decode(this.token)['email'];

html

<p>email</p>

使用 jwt.io 检查您的 JWT 令牌,以确保包含电子邮件。

【讨论】:

以上是关于Angular 11 - 登录后显示用户电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

从 mongoDB 获取数据并使用 Angular 和 NodeJs 在屏幕上打印

从服务传递到组件的角度错误消息

PHP显示登录用户的名字和姓氏[重复]

如何在 laravel 5.2 后同时获取电子邮件和密码

单相电表如何查看用了多少电?

如何使用 Angular + Spring + JSON 自定义登录/身份验证