如何在页面重新加载时保持AngularJS中的REST身份验证凭据?

Pat*_*lle 13 rest http basic-authentication angularjs

我们构建了一个非常"纯粹"的RESTful服务器,它使用HTTP BASIC AUTHENTICATION.这意味着客户端需要在每个请求时发送用户名/密码.它简单而安全(通过HTTPS).REST当然是无状态的并且不使用会话,因此API中没有"登录"方法.每个请求都需要再次授权.

在这个REST服务器上,我们构建了一个AngularJS客户端.这是一个单页面应用程序.当用户登录到客户端时,客户端将存储凭据并确保设置了正确的HTTP标头.

"问题"是当用户刷新浏览器时,应用程序将失去其状态,包括身份验证凭据.

处理这个问题的最佳方法是什么?AngularJS应用程序如何让用户登录/记住凭据?无论解决方案是什么,它都必须是安全的,因为它是一个银行应用程序.

Sin*_*dre 3

嗯,这是一个棘手的问题。一种可能的解决方案是使用 Javascrypt ( http://www.fourmilab.ch/javascrypt/ ) 和临时 localstorage/cookie 的某种组合。

根本不要存储密码,即使在本地存储中也是如此。您可以使用密钥派生函数从密码中获取密钥。通过盐和合理的迭代次数,这可能是足够安全的。

更新:

请参阅此在 jquery 移动应用程序中本地安全地存储用户密码以获得另一个好的答案