ember-cli - 使用 Ember 简单例份验证 + Ember CLI 的自定义身份验证器

标签 ember-cli ember-simple-auth

我正在尝试编写一个自定义身份验证器,类似于 this example in the docs 中的那个.目标是能够通过 session.user 检索当前登录的用户。

我正在使用 Ember CLI,所以在 initializers/authentication.js 我有

import Ember from 'ember';

var customAuthenticator = Ember.SimpleAuth.Authenticators.Devise.extend({
  authenticate: function(credentials) {
    debugger;
  }
});

export default {
  name: 'authentication',

  initialize: function(container, application) {

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

    // register the custom authenticator so the session can find it
    container.register('authenticator:custom', customAuthenticator);

    Ember.SimpleAuth.setup(container, application, {
      routeAfterAuthentication: 'landing-pages',
      authorizerFactory: 'ember-simple-auth-authorizer:devise'
    });
  }
};

当我尝试进行身份验证时,出现以下错误:

TypeError: Cannot read property 'authenticate' of undefined
at __exports__.default.Ember.ObjectProxy.extend.authenticate

知道为什么吗?

最佳答案

从 Simple Auth 0.6.4 开始,您现在可以执行以下操作:

index.html:

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

initializers/customize-session.js:

import Ember from 'ember';
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);
  }
};

关于ember-cli - 使用 Ember 简单例份验证 + Ember CLI 的自定义身份验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24319186/

相关文章:

javascript - Ember CLI Hook /事件错误

ember.js - Ember 重新加载 belongsTo 关系

ember.js - Ember Cli Inflector 调整

ruby-on-rails - 如何为多对多关系编写事件模型序列化器?

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

unit-testing - Ember 路线单元测试中未知的 `service:session` 注入(inject)器

ember.js - 使用 Oauth2 token 恢复没有电子邮件和密码的 session

ember.js - Ember Simple Auth 在使用 Torii 进行身份验证后立即使 session 无效

ruby-on-rails - Ember.js 查找没有 ID 的单个项目

javascript - 当我们第一次使用 Ember JS 启动我们的应用程序时会发生什么?