Backbone.js 主干网:如何获取经过身份验证的用户数据
我用的是脊骨和木偶 我有一个已定义的用户模型:Backbone.js 主干网:如何获取经过身份验证的用户数据,backbone.js,underscore.js,marionette,Backbone.js,Underscore.js,Marionette,我用的是脊骨和木偶 我有一个已定义的用户模型: Users.User = Backbone.Model.extend({ defaults: { short_name: '', full_name: '' } }); 我想在主干代码中轻松访问当前登录的用户数据 我不确定是否: 拥有从用户模型继承的单独模型(可能是Users.AuthUser??) 或 在Users.User model中添加一个单独的函数,该函数返回用户模型的一个实例,但包含登录
Users.User = Backbone.Model.extend({
defaults: {
short_name: '',
full_name: ''
}
});
我想在主干代码中轻松访问当前登录的用户数据
我不确定是否:
http://example.com/me
作为JSON
或者主干网可以以某种方式访问会话数据?一般的经验法则是,如果
子类
具有与父类无关的属性/方法,则应将其子类化。在我看来,这就是一个例子
主干网(只是一个MVC JS实现)无法访问您的会话数据。因此,这需要通过REST请求提供。模型之间不共享数据。除非您需要在用户模型中为经过身份验证的用户提供特定的功能,否则只需使用更多数据填充身份验证使用就足够了 我这样做的方式是在
fetch()
方法中,确保我的模型与一个端点通信,该端点返回当前登录用户的JSON
为了为经过身份验证的用户和其他用户定义不同的urlRoot
,您需要有两个单独的模型
另外,实际上我使用socket.io作为同步协议,而不是REST API,所以我只是对当前用户和联系人使用不同的事件名称进行同步。那么您对经过身份验证的用户使用不同的端点url吗?像登录用户的/me和其他人的/user/:id?正确。实际上,从API的角度来看,我将它们视为不同的模型,但在主干应用程序中仍然使用统一的表示。在这种情况下,当您想要获取AuthUser时,如何设置不同的url?您使用的fetchAuth()函数是否与正常的fetch()不同?更正:刚刚查看了我的代码,我实际上使用了两个模型,正是因为这个原因:我可以给它们分配一个不同的
urlRoot
属性。那么你是否像@juco建议的那样将一个模型从另一个模型中细分?你是否在你自己的主干应用程序中实现了相同的东西?就我个人而言,正如我上面所描述的,我会这样做做子类化将允许我覆盖像默认值
和验证()。是的,我认为/me
是一个非常有效的资源。如果你(或其他人)下周要开发一个移动/桌面应用程序,你的服务实现不需要改变以适应它。