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

问题描述:

在我正在开发的使用Node,Express和Backbone的网站上,我使用常规HTML表单进行用户登录,当登录成功时,创建一个用户会话。在服务器端访问这个会话信息很容易,让我可以访问用户名,用户名等,但我不确定如何在Backbone中访问这些信息。从服务器端代码获取会话信息到客户端代码

我想要获取的用户名,这样我可以像这样的集合创建一个URL:

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

但我不知道如何以最佳方式去获取基于这就是会话数据的用户ID在服务器端。这是否需要创建另一个模型 - 比如说,一个'用户'模型,通过特定的url/get请求从服务器获取会话数据?

谢谢!

我想出了一些东西,但仍然是开放的建议:

首先,在Express.js一个函数,返回用户名:

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

其次,在客户端,使用一个骨干模型或$不用彷徨获取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();然后正常工作。