ember.js - 为什么我必须在简单例份验证自定义 session 上查找存储而不是将其作为服务注入(inject)?

标签 ember.js ember-simple-auth

我有一个像这样的初始化程序:

import Ember from 'ember';
import Session from 'simple-auth/session';

var SessionWithCurrentUser = Session.extend({
  store: Ember.inject.service(),
  currentUser: function() {
    console.log(this.get('store'));
    console.log(this.store);
    console.log(this.container.lookup('service:store'));
  }.property('secure.access_token')
});

export default {
  name: 'custom-session',
  after: 'ember-data',
  initialize(registry) {
    registry.register('session:withCurrentUser', SessionWithCurrentUser);
  }
};
在我的应用程序加载完毕很久之后,

currentUser 就会在用户交互时被调用。只有最后一个容器查找给出了 store,其他 2 个是一个对象:

{
 _lastData: Object,
 key: "ember_simple_auth:session"
 [..]
}

发生什么事了?为什么我无法注入(inject)商店?

最佳答案

这是因为当前版本的 simple-auth 中的存储被具有 session 存储的实例初始化程序覆盖。 simple-auth 的下一个主要版本将把 session 存储变成一项服务,我们将能够做到:

import Ember from 'ember';

const { service } = Ember.inject;

export default Ember.Service.extend({
  session: service('session'),
  store: Ember.inject.service(),

  account: Ember.computed('session.content.secure.account_id', function() {
    const accountId = this.get('session.content.secure.account_id');
    if (!Ember.isEmpty(accountId)) {
      return DS.PromiseObject.create({
        promise: this.get('store').find('account', accountId)
      });
    }
  })
});

来自the dummy app ,一次https://github.com/simplabs/ember-simple-auth/pull/602已合并。

关于ember.js - 为什么我必须在简单例份验证自定义 session 上查找存储而不是将其作为服务注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31901932/

相关文章:

ios - 将 "Facebook Login"添加到 SimpleAuth 的 Instagram 登录页面

ember.js - Ember Simple Auth 自定义验证器

ember.js - 推荐使用 Ember.js 编写的示例应用程序

authentication - 具有多个设计范围的 Ember 简单例份验证

ember.js - 如何在 Ember Broccoli 构建中跳过 SASS 编译

javascript - 通过获取 JSON 对象并将其推送到存储中来提供 Ember.js 模板

javascript - 实现自定义 ember-simple-auth 身份验证器

javascript - Ember ember-simple-auth 覆盖应用程序路由中的routeIfAlreadyAuthenticated

javascript - 如何删除 Ember 对象的内容或将其设置为 null?

javascript - 如何在 Ember.js 中重复资源