首页 > 解决方案 > 如何使用 JWT 有效负载存储会话用户数据?

问题描述

我正在构建一个 Web 应用程序,其 API 后端用 Symfony 编写,前端用 Angular 7 编写。我的问题是从后端检索用户数据并将其存储在前端的会话中. 我使用 JWT 在前端和后端之间进行身份验证。

我想使用 JWT 有效负载从后端存储用户数据。我已经读到将 JWT 令牌存储在 localStorage 中是不安全的,我必须使用httpOnly安全选项将其存储在 cookie 中。但是如果我使用这个系统,我的 Angular 前端应用程序将无法读取 JWT 有效负载数据(无法读取 Javascript 中的 httpOnly cookie)。

我的问题是:如何通过 httpOnly/secure 选项使用 JWT 进行身份验证并将有效负载数据用于用户会话数据?我是否必须仅使用 JWT 进行身份验证并再次调用后端 API 来检索用户会话数据?

谢谢 !

标签: angularsymfonysessionjwthttponly

解决方案


要从令牌中获取您的用户详细信息,以便在 javascript 中使用这样的前端应用程序

function parseJwt (token) {
        var base64Url = token.split('.')[1];
        var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
        return JSON.parse(window.atob(base64));
    };

推荐阅读