我开发了一个单页应用程序原型,它在前端使用 Backbone,并从服务器上的瘦 RESTful API 获取数据。
来自繁重的服务器端应用程序开发(php 和 python),我真的很喜欢使用厚客户端 MVC 的新的不同设计方法,但对于如何最好地将应用程序限制为经过身份验证的登录用户感到困惑。
我更喜欢让应用程序本身支持登录,并且除了网站的本机登录之外,最终还希望实现其他类型的登录(openid、fb connect 等)。我不清楚这是如何完成的,并且一直在寻找 - 但没有成功找到让我清楚的信息。
从整体上看,当前注册用户并要求他们登录才能使用单页应用程序的最佳实践是什么?
用户登录后,如何对 api 请求进行身份验证?我可以存储会话,但如何在 API 调用中检测此会话,或者是否必须在每个 API 调用中传递令牌?对此的任何答案将不胜感激!
我见过的最 RESTful 的方式是基于 OAuth 客户端凭据流,基本上是一个 /token 端点,您将用户名/密码发布到该端点,该端点将返回此会话的访问令牌。此后的每个 ajax 请求都会附加一个Authorization
带有令牌的承载标头。您可以将令牌存储在全局变量中,以便将其保留到页面刷新/关闭为止,使用本地存储来让用户在会话之间保持登录状态,或者使用 javascript cookie。如果您不喜欢令牌的想法,那么您可以使用旧的 cookie 方法,该方法无论如何都会自动随任何 ajax 请求发送。
至于 facebook/google 等,我通常遵循 stackoverflow 方法,将外部用户登录关联到帐户。然后使用相当正常的基于服务器的oauth dance(尽管您可以用ajax请求替换对服务器的所有请求,并稍加修改,但我发现它并没有太大区别,因为无论如何您都需要在您和服务器之间进行重定向)。我通常会为 Facebook 登录发出一个加密的 cookie,然后使用与上面类似的方法将其转换为令牌(只需随请求发送 cookie,而不是用户名/密码)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)