3

我一直在尝试session.currentUser使用idemail和属性创建一个points属性。

使用 Ember simple auth + Ember CLIHow to store the user in a session引用自定义身份验证器,但我无法弄清楚这些部分是如何组合在一起的。

我正在使用 Ember CLI。在我的index.html,我有:

window.ENV['simple-auth'] = {
  authorizer: 'simple-auth-authorizer:devise',
  session: 'session:custom'
};

initializers/custom-session.js中,我有:

import Session from 'simple-auth/session';
import Devise from 'simple-auth-devise/authenticators/devise';

export default {
  name: 'session:custom',
  before: 'simple-auth',
  initialize: function(container) {
    container.register('session:custom', Devise);
    Session.extend({
      currentUser: function() {
        var id = this.get('id');
        var email: this.get('user_email');
        var points: this.get('points');

        if (!Ember.isEmpty(id)) {
          return this.store.createRecord('user', {
            id: id,
            email: email,
            points: points
          });
        }
      }.property('id')
    });
  }
};

这在很多方面对我来说都是错误的,但经过几个小时的努力,这至少表明我正在努力完成什么。

我会非常感谢任何帮助。先感谢您!

4

1 回答 1

3

我知道了!!!:)

索引.html:

window.ENV['simple-auth'] = {
  authorizer: 'simple-auth-authorizer:devise',
  session: 'session:withCurrentUser'
};

初始化程序/customize-session.js:

import Session from 'simple-auth/session';

var SessionWithCurrentUser = Session.extend({
  currentUser: function() {
    var userId = this.get('user_id');
    if (!Ember.isEmpty(userId)) {
      return this.container.lookup('store:main').find('user', userId);
    }
  }.property('user_id')
});

export default {
  name: 'customize-session',
  initialize: function(container) {
    container.register('session:withCurrentUser', SessionWithCurrentUser);
  }
};

希望这对其他人有帮助。

于 2014-08-14T17:27:50.643 回答