【问题标题】: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();然后正常工作。