在哪里保存 EmberJS 应用程序的详细用户会话信息



我正在构建我的第一个EmberJS应用程序,并且仍在尝试围绕最佳实践和约定进行思考。 我正在使用 ember-data 与 RESTful API 通信,并且 ember-auth 运行良好,可以登录并保存用户的 ID 和 OAuth2 访问令牌。 但是,我现在想维护其他用户信息(例如姓名、电子邮件等),以便在导航栏和应用程序的其他各个区域中使用。

为此,我认为从单独的端点读取一个用户对象(模型)会很有帮助(例如 /users/<id>)。 由于整个应用程序都需要此信息,因此我倾向于将其存储在ApplicationController上,有点像 Ember 文档中的此示例:

App.ApplicationController = Ember.Controller.extend({
  // the initial value of the `search` property
  search: '',
  query: function() {
    // the current value of the text field
    var query = this.get('search');
    this.transitionToRoute('search', { query: query });
  }
});

但是,我的用户对象不会像query那样是操作或像search这样的属性,所以我不确定此示例是否适用。

我想我最终会想这样称呼:

this.get('store').find('user', App.Auth.get('userId'));

但我只是不确定它会在应用程序中的位置。

主要问题:根据 Ember 约定,ApplicationController是否是此信息的正确位置,如果是这样,从 REST API 检索它的代码可能是什么样子的?

感谢任何想法,让我走上正轨。

我之前采用的一般方法是将当前登录的用户存储为 App.CurrentUser 。 然后,您可以在任何模板中使用它。 拉取User对象后,我调用Ember.set('App.CurrentUser',user)来存储它,然后Ember.get('App.CurrentUser')在其他路由或控制器中检索它。

这是一个简短的jsbin,其中包含一般想法: http://jsbin.com/ucanam/994/edit

最新更新