在Angular SPA

时间:2016-04-07 17:10:22

标签: javascript angularjs cookies local-storage jwt

我的Angular SPA中有一个身份验证服务需要存储一个JWT令牌,以便每次都可以将它发送回头部的服务器(API要求它包含在它自己的头中,称为Authentication-Token )

目前我的身份验证服务只是将其保留在内存中,但显然这需要新的登录,如果页面刷新或者他们在新标签中打开一个页面,所以我需要将它们的详细信息存储一些更永久的。据我所知,我有几个选择,但没有一个是理想的

A) - 将它们存储在cookie中 - 但随后每次请求都会发送两次令牌,以及需要与其一起存储的用户配置文件数据等其他数据。

B)本地存储 - 这似乎是一个不错的选择,但它有一个限制,如果它已满(假设数据缓存服务正在填充它),那么它将不会存储细节。似乎无法对足够的空间进行密封,以便可靠地存储所有用户的详细信息

c)会话存储 - 如上所述,但如果用户打开新标签

则不起作用

d)在每次调用API之前,从服务器上发送详细信息并使用ng-init将其存储在内存中。这没关系,但我的网站目前是一个简单的HTML网站,它调用API,目前它不是PHP / Node / .net网站所以我必须引入服务器端的东西来获取令牌。

那么,有没有人有更好的想法?或者以任何方式解决这些问题?

1 个答案:

答案 0 :(得分:1)

我通常使用LocalStorage或SessionStorage(取决于要求)。限制为10MB(组合本地和会话)每个来源,因此您应该能够在应用程序中管理它,或者找出其他方法以确保凭据空间受到保护。