Joh*_*son 39 javascript authentication javascriptmvc backbone.js single-page-application
我开发了一个单页应用程序原型,它在前端使用Backbone,并在服务器上使用瘦RESTful API来获取它的数据.
来自繁重的服务器端应用程序开发(php和python),我非常喜欢使用胖客户端MVC的新的不同设计方法,但我对如何最好地将应用程序限制为登录的经过身份验证的用户感到困惑.
我更喜欢将应用程序本身放在登录后面,并且除了站点的本机登录之外,还希望最终实现其他类型的登录(openid,fb connect等).我不清楚这是如何完成的并且一直在搜索 - 但是在找到让我清楚的信息方面不成功.
总体而言,目前注册用户并要求他们登录以使用您的单页应用程序的最佳做法是什么?
用户登录后,api请求如何进行身份验证?我可以存储会话但是如何在API调用中检测此会话,或者我是否需要在每次单独的API调用中传递一个令牌?任何答案都将非常感谢!
Bet*_*tty 10
我看到的最RESTful方式是基于OAuth客户端凭据流,基本上是您发布用户名/密码的/ token端点,该端点返回此会话的访问令牌.之后的每个ajax请求都会Authorization使用令牌附加承载标头.您可以将令牌存储在全局变量中,以便在页面刷新/关闭之前保留它,使用本地存储来保持用户在会话之间登录,或者使用javascript cookie.如果您不喜欢令牌的想法,那么您可以使用旧的cookie方法,无论如何都会自动发送任何ajax请求.
至于facebook/google等,我通常遵循stackoverflow方法,我将外部用户登录与帐户相关联.然后使用一个相当普通的基于服务器的oauth舞(虽然你可以用ajax请求替换所有对服务器的请求稍作修改,但我发现它并没有太大的区别,因为你需要在你和服务器之间进行重定向).我通常会为facebook登录发出加密的cookie,然后我使用与上面类似的方法将其转换为令牌(只需使用请求而不是用户名/密码发送cookie).
我们使用基于django cookie的身份验证,并为登录和单页面应用程序提供单独的页面.对我们的用例非常有效.我们使用了基于Backbone的会话管理系统,我在这里描述:backbone.js - 处理用户是否登录