从服务器端代码获取会话信息到客户端代码
问题描述:
在我正在开发的使用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();然后正常工作。