使用 Backbone Js 和 SLIM 框架进行用户身份验证

Posted

技术标签:

【中文标题】使用 Backbone Js 和 SLIM 框架进行用户身份验证【英文标题】:User Authentiation Using Backbonejs and SLIM Framework 【发布时间】:2015-02-05 17:33:29 【问题描述】:

我正在尝试使用 Backbonejs 和 SLIM 框架开发应用程序。现在我想开发用户登录/注销功能。在这种情况下,我想在用户从一个页面导航到另一个页面时让 SESSION 在服务器中保持活动状态。以前我使用过另一个 php 框架和核心 PHP,并成功实现了用户身份验证。 SLIM 框架作为 API 工作。实际上我的问题是“如何使用来自 Backbonejs 的 API 的 HTTP 请求知道当前的 SESSION 是活跃的?”

对我来说看起来很乱。我阅读了几篇如下所示的 *** 帖子,但无法找到解决方案。

How to do authentication with a REST API right? (Browser + Native clients)

If REST applications are supposed to be stateless, how do you manage sessions?

How to use PHP sessions with REST client application ?

我希望你们中的任何人使用 Backbonejs 和 SLIM 框架作为 API 来实现用户身份验证。如果他/她用一些示例代码分享他/她的经验,那将对我有很大的帮助。

谢谢

【问题讨论】:

【参考方案1】:

我不确定 Slim API。但是对于 Restful Web 服务,没有会话概念。

相反,您可以使用带有身份验证令牌的 http 标头令牌,并且此令牌可以保存在表中(例如用户表)。可以进行检查以确保每次请求到达服务器时令牌是否有效。注销时取消令牌。

Post Authentication,从登录操作的成功回调中可以触发一个自定义事件,该事件已经绑定加载成功页面。

EG:

在应用程序级别初始化。

var controller = _.extend(, Backbone.Events);
controller.on("myapp:dashboard",function() 
  //your dashboard data fetch logic.
  //create instance of the view and pass fetched data.
);

在登录成功处理程序(回调)中进行以下调用:

Delegates to the custom controller.
controller.trigger("myapp:dashboard");

Changes the url to the correct location.
myAppRouter.navigate("tourl",trigger:false);

参考: http://lostechies.com/derickbailey/2012/04/03/revisiting-the-backbone-event-aggregator-lessons-learned/

【讨论】:

【参考方案2】:

我同意 Balaji 的观点,但他并不准确。 REST 有会话,但您必须将其保留在客户端。如果您想在会话中写入任何内容,则必须将其与响应正文一起发回,以便客户端可以处理和存储它。如果您想从会话中读取任何内容,则必须将其与请求一起发送,以便服务器可以处理它。

所以如果你想做访问控制,你应该将用户名和密码保存在客户端的内存中,并覆盖backbone.sync()以每次发送auth headers。在授权之前的服务器端,您可能必须通过 memcached 使用 username+password -> identity+permissions 的缓存来验证每个请求。通过 SLIM,您需要提取标题,我认为这不会导致问题。 SLIM 没有内置的身份验证和授权支持,因为它只是一个 HTTP 库,因此您需要另一个工具来实现该部分。

【讨论】:

以上是关于使用 Backbone Js 和 SLIM 框架进行用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Backbone & Slim PHP - Access-Control-Allow-Headers - 可以获取信息,不能发布吗?

Backbone UI 和 CMS 后端:涉足 Restful CRUD

通过 Angular JS $http.post 使用 slim 框架时出现 404 无效的 http 状态代码

html 上传Backbone Slim Framework http://www.ebizdesigner.com/item/52-backbonejs-mvc-app-tea-tree-part-

如何开始使用 Backbone.js 和 Rails 3.1

Backbone.js 和 DOM 操作