【问题标题】:acquiring session information from server-side code, to client-side code从服务器端代码获取会话信息到客户端代码
【发布时间】:2012-07-05 18:40:34
【问题描述】:

在我正在使用 Node、Express 和 Backbone 开发的网站上,我让用户使用常规 HTML 表单登录,成功登录后,会创建一个用户会话。在服务器端访问此会话信息很容易,让我可以访问用户 ID、用户名等,但我不确定如何在 Backbone 中访问此信息。

我想获取 UserID,这样我就可以为这样的集合创建 URL:

url: '/api/users/'+ this.userID +'/movies'; 

但我不确定如何最好地根据服务器端的会话数据获取用户 ID。这是否需要创建另一个模型——例如,通过特定的 url/get 请求从服务器获取会话数据的“用户”模型?

谢谢!

【问题讨论】:

    标签: javascript node.js cookies backbone.js express


    【解决方案1】:

    我想出了一些东西,但仍然愿意接受建议:

    首先,在 Express.js 中创建一个返回 userId 的函数:

    app.get('/api/current-user', middleware.requiresLogin, function(req, res){
      res.send(req.session.user._id);
    });
    

    其次,在客户端,使用 Backbone 模型或 $.get 请求检索 ID:

    var userID = $.get("/api/current-user");
    
    $.when(userID).then(function(data){
        var user = new userCollection(data);
        user.fetch();
    });
    

    你的收藏和模型这样做:

    window.userModel = Backbone.Model.extend({
        idAttribute: "_id"
    });
    
    var userCollection = Backbone.Collection.extend({
        model: userModel,
        initialize: function(options){
            this.url = "/api/users/"+options+"/movies";
            this.model.urlRoot = "/api/users/"+options+"/movies";
        }
    });
    

    myModel.save();然后正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-13
      相关资源
      最近更新 更多