Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干网:如何获取经过身份验证的用户数据_Backbone.js_Underscore.js_Marionette - Fatal编程技术网

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: ''
    }
});
我想在主干代码中轻松访问当前登录的用户数据

我不确定是否:

  • 拥有从用户模型继承的单独模型(可能是Users.AuthUser??)
  • 在Users.User model中添加一个单独的函数,该函数返回用户模型的一个实例,但包含登录的用户数据
  • 我也不知道如何检索当前登录的用户数据

    我是否通过像
    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
    是一个非常有效的资源。如果你(或其他人)下周要开发一个移动/桌面应用程序,你的服务实现不需要改变以适应它。