使用完全解耦的前端和用户身份验证

时间:2013-06-10 08:11:39

标签: html5 backbone.js angularjs knockout.js ember.js

我正在尝试使用完全分离的HTML5前端,但仍然是针对Web应用程序的用户身份验证。这是可能的,还是会遇到一些沉重的浏览器安全问题?

我们的想法是通过类似example.com的CDN提供所有静态内容,并让它通过单独的子域(如api.example.com)获取动态数据(和用户身份验证)。 这将加快网站的加载时间,我可以将前端内容保存在一个完全独立的仓库中,这样开发人员就不必担心设置后端来开发和测试新功能。

这在一些JS框架中是否已经可以,backbone.js,angular.js,ember.js,knockout.js?

1 个答案:

答案 0 :(得分:1)

肯定是,但我认为更多的是方法而不是技术。我已经实现了你为项目描述的内容(它在线但不想在这里做一个无耻的插件,如果有兴趣检查出来我可以发布链接)。我的堆栈是后端的java,暴露了用于身份验证和业务逻辑的REST API。客户端是backbone.js应用程序。我明确地决定不使用会话。这完全是无国籍的。这当然意味着必须在每次请求时重新验证用户。

当用户通过略微修改的OAuth端点登录时,它会获得必须在每次请求时传递的令牌。 Cookie在这种情况下工作,因为它们由浏览器自动处理。如果没有作为cookie传递,后端会将其作为参数。前端使用REST端点进行通信。它是一个单页面应用程序,完整的客户端,这意味着后端提供的页面基本上是空的,包括很少的JS文件,它们是应用程序本身。没有其他页面加载发生。通过简单地删除cookie或不发送authToken来完成注销,服务器不能也不必“忘记”用户。令牌很好,因为它们可以无效,无论是expalcitely还是通过更改密码。我选择了这种方法,因为它可以轻松地为我的webapp开发桌面应用程序和浏览器插件,而无需触及一行后端代码。