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

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

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

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 来实现用户身份验证。如果他/她用一些示例代码分享他/她的经验,那将对我有很大的帮助。

谢谢

【问题讨论】:

    标签: api rest session backbone.js slim


    【解决方案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 库,因此您需要另一个工具来实现该部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-18
        • 2021-08-06
        • 2019-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-03
        相关资源
        最近更新 更多