gpt4 book ai didi

javascript - 登录后的 Angular JWT 和用户信息存储

转载 作者:行者123 更新时间:2023-11-29 14:49:35 27 4
gpt4 key购买 nike

在成功登录后将 JWT 以外的任何其他用户信息保存在本地存储或 cookie 中的良好做法是什么? (用户配置文件对象已经在 jwt 有效载荷子部分中保存和加密。)我需要准备好用户配置文件对象,然后再以 Angular 初始化任何其他内容(用于获取用户 Angular 色、登录状态等)。

如果我只在客户端保存 JWT,我需要一个额外的 ajax 请求才能在应用程序加载之前从服务器端的 JWT 解码获取用户信息,因为 token secret 在服务器上(仅在整页刷新之后)。 token 有效或无效,因此在这种情况下处理错误要容易得多。

如果我将 JWT 和用户配置文件对象作为字符串保存在客户端的存储中,那么这是多余的,用户可以手动更改该对象,应用程序可以关闭。

我更喜欢在成功登录后仅将 JWT 保存在客户端的存储中,但我需要一些建议,在这种情况下如何组织代码?如何在整个页面刷新后获取用户配置文件对象?

请帮忙。

最佳答案

最安全的解决方案是将 JWT 存储在 HTTPS-Only cookie 中,然后向服务器发出请求以获取用户对象。

如果您想避免对服务器的额外调用,您需要发挥创意。我正在尝试的一种方法是将 JWT 的声明主体存储在客户端上 - 仅主体,签名被排除在外。排除签名后,“ token ”不再是 JWT,不能用于身份验证,从而防止实际访问 token 从本地存储中被盗。

然而,这确实假设了关于声明主体的两件事:

1) 信息不透明,不包含有关用户的个人身份信息 (PII)(本地存储容易受到 XSS 攻击)。

2) 如果这个对象在本地存储中被修改,你的 Angular 应用程序不会泄露敏感信息给用户(你不应该在你的 Angular 应用程序中存储敏感信息,它应该被 API 保护)

3) 与所有基于 cookie 的身份验证策略一样,您正在保护自己免受 CSRF Attacks 的侵害

我在 Stormpath 工作我最近写了一篇关于这个主题的博文:Token Based Authentication for Single Page Apps .

希望这对您有所帮助!

关于javascript - 登录后的 Angular JWT 和用户信息存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749151/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com