如何:AngularJS Basic Auth + cookie到REST API服务器?

时间:2014-12-15 01:51:28

标签: angularjs rest cordova authentication basic-authentication

我想以正确的方式使用AngularJS处理Basic Auth。我很确定答案是在SO的某个地方,但我没有找到它。似乎每个人都对身份验证有特殊需求,我很困惑。 请注意,我对身份验证没有特别的了解,对于虚拟问题很抱歉。

案例

  • 处理HTTP Basic Auth(服务器)的Django服务器上的REST API
  • 嵌入Cordova / Phonegap的AngularJS应用程序将用于智能手机(客户端)
  • 客户端使用HTTP基本身份验证登录。它是无状态的,意味着客户端需要为每个Web服务的API调用提供凭据。

现在有效

登录现在以这种方式运作:

  • 用户会看到登录页面,输入其电子邮件/密码并验证
  • angularJS客户端使用$ cookiestore
  • 在cookie中设置凭据
  • angularJS客户端使用$ http调用GET到http://myapp.com/api/login并使用HTTP头中的凭据(基本身份验证)
  • 如果请求成功,则认为用户已登录。
  • 之后,当cookie存储凭据时,这些凭据将在每个Web服务调用的HTTP标头中发送。

它按预期工作。

这有什么问题

该系统唯一的问题是,当智能手机应用程序(即angularJS / Cordova应用程序)关闭时,一切都会丢失,用户需要再次登录。

我该如何解决?非常感谢。

1 个答案:

答案 0 :(得分:1)

实际上,当应用程序关闭时,Cordova似乎会删除cookie(即使将来设置的过期日期),现在有办法解决这个问题。

然而,使用LocalStorage而不是cookie可以完美地解决问题。它基本上与使用cookie的方式相同,因为它是一个关键的>值存储。它更清洁。

This article是对localStorage的一个很好的介绍。