从服务器端代码获取会话信息到客户端代码

时间:2012-07-05 18:40:34

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

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

我想获取UserID,以便我可以为这样的Collection创建一个URL:

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

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

首先,在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();然后正常工作。