【问题标题】:How use JWT payload to store session user data?如何使用 JWT 有效负载存储会话用户数据?
【发布时间】:2019-08-27 12:39:55
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: angular symfony session jwt httponly


    【解决方案1】:

    要从令牌中获取您的用户详细信息以供您的前端应用程序使用,如下所示 在 JavaScript 中

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

    【讨论】:

    • 顺便说一下,由于您使用的是 JWT,因此您不需要使用 session
    • 存储在 HttpOnly cookie 中的 JWT(为了防止 XSS 攻击)无法被 Javascript 读取...所以我不能用它来读取客户端的 JWT 声明...
    猜你喜欢
    • 2019-09-25
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 2022-01-14
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多