使用REST API和Javascript客户端,如何在页面刷新后保持登录
Using a REST API and a Javascript client, how to stay logged in after a page refresh?
目前,我的身份验证流程如下:
-
用户在客户端浏览器应用程序(准确地说是AngularJS)中填写登录表单,用户名和密码存储在浏览器的内存中(纯Javascript变量)。
-
访问受保护的API资源时,请求将使用存储在内存中的凭据通过SSL上的HTTP基本身份验证进行身份验证。
问题是,当用户刷新页面时,她的凭据将被删除,她需要再次登录。我是不是遗漏了一些显而易见的东西?
到目前为止,我发现的几个解决方案:
-
将用户名和密码存储到cookie中:即使使用安全cookie和/或加密,这似乎也不安全。
-
使用会话cookie:这似乎违反了RESTful的无状态原则。
(我想OAuth在客户端安全存储访问令牌方面也有同样的问题?)
会话cookie在这里完全可以。一旦安装好,你不在乎它们,浏览器会通过标题将它们与每个请求一起发送。
受这个答案的启发,我最终做了这样的事情(链接打开了一张相当大的图片)。
简言之,客户端将访问令牌存储在javascript变量中,但刷新令牌存储在服务器端会话中(在托管客户端应用程序的服务器上,而不是API服务器上)。
相关文章:
- 如何进行允许浏览器刷新的匿名Firebase登录
- 使用帐户登录ui angular dons't刷新$account.currentUser
- 如何在使用 Firebase 登录或注销时更改状态而不刷新
- 弹出窗口关闭并刷新成功登录Facebook的父页面
- 登录失败时不刷新
- AngularJS:页面刷新时保留登录信息
- 使用Parse登录Facebook,但我得到--https://api.parse.com/1/users404--刷新
- 如何在Google OAuth2中获得用户登录并同意后的访问令牌和刷新令牌
- 在不刷新页面的情况下触发每个auth登录过程(facebookauth)
- 使用REST API和Javascript客户端,如何在页面刷新后保持登录
- Facebook身份验证登录不会刷新页面
- 刷新时不要重定向到登录页面
- i 'm使用用户登录的弹出窗口,当用户实际登录时,我如何刷新父(打开器)页面?
- 如何在刷新后保持用户登录到firebase应用程序
- 导航菜单指令在用户登录或注销时刷新
- 在Node/Express中登录Passport JS后没有刷新页面和搜索
- 如何在不刷新页面的情况下使用ajax制作登录系统
- 登录成功后必须重定向到页面;现在只是重新加载(刷新)页面
- 在angular页面刷新时发生了什么?为什么我的登录用户不能被识别?
- 添加Facebook登录按钮后,主页不断刷新