登录后的角度JWT和用户信息存储
Angular JWT and user info storage after login
成功登录后,将除 JWT 以外的任何其他用户信息保存在本地存储或 cookie 中有多好的做法?(用户配置文件对象已在 jwt 有效负载子部分中保存和加密。我需要在初始化角度中的其他任何内容(用于获取用户角色、登录状态等)之前准备好用户配置文件对象。
如果我只在客户端保存 JWT,我需要在应用程序加载之前一个额外的 ajax 请求才能从服务器端的 JWT 解码中获取用户信息,因为令牌机密在服务器上(仅在整页刷新后)。令牌是有效的还是无效的,因此在这种情况下处理错误要容易得多。
如果我将 JWT 和用户配置文件对象保存为客户端存储中的字符串,那么这是多余的,用户可以手动更改该对象和应用程序可以关闭。
我更喜欢在成功登录后只将 JWT 保存在客户端的存储中,但我需要一些建议,在这种情况下如何组织代码?刷新整页后如何获取用户配置文件对象?
请帮忙。
最安全的解决方案是将JWT存储在仅限HTTPS的cookie中,然后向服务器发出请求以获取用户对象。
如果你想避免对服务器的额外调用,你需要发挥创意。 我正在尝试的一种方法是将 JWT 的声明正文存储在客户端上 - 仅存储正文,不包括签名。 排除签名后,"令牌"不再是 JWT,不能用于身份验证,从而防止实际访问令牌从本地存储中被盗。
但是,这确实假设了有关声明正文的两件事:
1) 信息不透明,不包含有关用户的个人身份信息 (PII)(本地存储容易受到 XSS 攻击)。
2) 如果在本地存储中修改此对象,您的 Angular 应用程序不会向用户泄露敏感信息(您不应该将敏感信息存储在您的 Angular 应用程序中,它应该受到 API 的保护)
3) 与所有基于 cookie 的身份验证策略一样,您正在保护自己免受 CSRF 攻击
我在 Stormpath 工作,最近写了一篇关于这个主题的博客文章:单页应用程序的基于令牌的身份验证。
希望这有帮助!
为了简单起见,我将只存储 JWT 并实现一个额外的 ajax 调用来获取用户配置文件。
但是,如果您绝对想避免这一次调用,则可以考虑使用非对称签名的 JWT 而不是加密的 JWT,然后在客户端提取数据,假设您控制 JWT 的创建。
- 如何通过directline僵尸连接器发送用户信息
- 从下拉框中选择用户信息,并使用进度计数器显示数据库中的选定项目
- 在/user/后面显示用户名的用户信息
- AngularJS如何解码带有令牌和内部用户信息的jsonp响应
- 如何从JavaScript访问Django登录的用户信息
- 用于广告的 iframe ?获取用户信息
- 如何动态创建集合名称(取决于用户信息)
- 登录后的角度JWT和用户信息存储
- PhoneGap登录页面,如何保存用户信息
- 使用 PayPal API 登录:获取基本用户信息
- PHP/JavaScript 用户信息收集
- Parse JS SDK登录不使用AngularJs ui路由保持当前用户信息
- 用于确认用户信息的Javascript脚本
- Facebook Javascript SDK-访问用户信息
- 用于输入用户信息的动态PHP代码
- 如何将用户信息集成到我的Facebook应用程序中
- NodeJs-从JWT令牌中检索用户信息
- 在用户信息前插入值
- 从Facebook检索已验证的用户信息
- Mongodb获取每个文档的用户信息