基于角度令牌的身份验证,获取和存储用户个人资料,最佳实践

时间:2019-04-11 09:46:43

标签: angular angular7 http-token-authentication

几个月前,我开始为Angular项目构建我的第一个基于令牌的身份验证,现在我需要对其进行升级。到目前为止,我的 / login 端点仅返回一个令牌,该令牌存储在本地存储中。当令牌存在且有效时,用户将登录。 但是现在我还需要在导航栏中显示用户名和用户角色,因为我需要创建角色保护。

我阅读了很多有关此主题的文章和问题/答案,但我真的很困惑,这是获取用户资料的最佳方法。

获取

  1. 直接在登录名上与令牌一起获取用户详细信息
  2. 恰好在登录后,如果登录请求成功,则执行另一个请求,例如: / me
  3. 在令牌有效负载中添加用户名和角色

商店

详细信息也应保持不变(如果用户关闭并打开浏览器),如何存储它们?我应该使用存储(本地存储/ cookie)吗?还是每次用户打开应用程序时执行一个请求?

使用

这里我没有任何线索。如果我使用存储设备,是否应该每次都阅读它们?还是应该使用主题?

从您的经验来看,哪种方法最好?还是您还有其他想法? 预先感谢!

1 个答案:

答案 0 :(得分:1)

我正在处理这个问题,希望对您有所帮助。

  1. api/login这样的回复:
{
  token: 'your token...',
  expireAt: 'token expire time',
  user: {
    name: 'admin',
    role: 'master'
    // ... else user info
  }
}
  1. 使用localStorage保存令牌和用户信息。下次打开同一网站时,您可以从本地存储中获取令牌信息,然后根据到期时间确定是否需要重新登录。

  2. cookie不应保存复杂或大型的数据结构,因为它是:

    • 操作不便
    • 大小有限
    • 每次必须执行http请求