【问题标题】:How to create user a service which takes JWT token and returns user object如何为用户创建一个接受 JWT 令牌并返回用户对象的服务
【发布时间】:2020-05-28 19:07:50
【问题描述】:

我有 3 项服务

  • 角度(前端)
  • java (fapi)
  • java(后端,jpa)

每个用户的请求都包含标头 <Authentification> 和 JWT 令牌(角度拦截器)键。

如何从这个令牌中获取用户,例如创建用户页面?或者管理员是否会理解这是用户?

我正在尝试将Map(key,value) 对(令牌,用户)保存在我的前面,但是每次都删除了这张地图。

我需要在 fapi 中创建此地图吗?还是将token存入数据库?

【问题讨论】:

  • 请添加有关您的问题的更多详细信息添加一些代码

标签: javascript java angular spring


【解决方案1】:

当用户登录时,您可以将用户的“用户名”与“令牌”一起作为来自后端的响应。然后,您可以将从后端收到的 {token, username} 保存到前端的 localStorage

示例:

// Response from backend--------------------
{
    "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9",
    "username": "tester"
}

// Login service from frontend--------------------
login(user: User): Observable<User> {
    return this.http.post<User>('/login', user)
        .pipe(
            map(response => {
                localStorage.setItem('currentUser', JSON.stringify(response));
                return response;
            })
        );
}

如果你想从你的前端检索 {token, username}:

const currentUser = JSON.parse(localStorage.getItem('currentUser'));

【讨论】:

    【解决方案2】:

    当用户登录时,令牌既可以存储在本地存储中,也可以存储在 cookie 中。

    令牌只会包含您输入的加密数据。如果您需要令牌中的用户名,则需要在创建令牌时包含用户名。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2014-07-30
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2018-10-24
      相关资源
      最近更新 更多