Ember Simple Auth设计错误'无法读取属性'验证'未定义的' Rails 4后端

时间:2014-05-17 03:41:31

标签: authentication ruby-on-rails-4 ember.js devise

我使用Ember.SimpleAuth和设计包。我以前曾经多次使用过装备和导轨,但我很贪婪。此外,我开始怀疑是否应该通过令牌认证为Ember应用程序设计......无论如何,这是我的代码。

更新

2我注意到的具体事项:

  1. 我已经清理了我的资产并使用了最新的ember-simple-auth.js。我似乎没有authenticatorFactory,因为以下行是' undefined'在' var Session'里面定义:

    _this.container.lookup(authenticatorFactory)
    
  2. 我觉得我应该调用ember-simple-auth-devise.js中的authenticate方法,但根据我的控制台,该文件永远不会被触及。这是应该的样子吗?

  3. END UPDATE


    我很确定我正确地遵循了指示:

    的application.js:

    //= require jquery
    //= require jquery_ujs
    //= require handlebars
    //= require ember
    //= require ember-data
    //= require quiz
    //= require pen
    //= require ember-simple-auth
    //= require ember-simple-auth-devise
    //= require_self
    //= require quizzmob
    Quizzmob = Ember.Application.create({
        LOG_TRANSITIONS: true
    });
    

    初​​始化/ authentication.js.coffee

    Ember.Application.initializer
      name: "authentication"
      initialize: (container, application) ->
        Ember.SimpleAuth.setup container, application,
          authorizerFactory: 'ember-simple-auth-authorizer:devise'
    

    我有一个为登录定义的路线:

    @route "login"
    

    还有一个控制器:

    Quizzmob.LoginController = Ember.Controller.extend(Ember.SimpleAuth.LoginControllerMixin,
        authenticatorFactory: "ember-simple-auth-authenticator:devise"
    )
    

    我的登录表单:

    <form {{action 'authenticate' on='submit'}}>
      <label for="identification">Login</label>
        {{input id='identification' placeholder='Enter Login' value=identification}}
      <label for="password">Password</label>
        {{input id='password' placeholder='Enter Password' type='password' value=password}}
      <button type="submit">Login</button>
    </form>
    

    我得到的错误是:&#34; TypeError:无法读取属性&#39;验证&#39;未定义&#34; 它在ember-simple-auth.js中的authenticate方法中调用,位于以下位置:

    return new Ember.RSVP.Promise(function(resolve, reject) {
        _this.container.lookup(authenticatorFactory)|.authenticate(options).then(function(content) {
                                                    ^
    

    绝对没有请求发送到服务器,所以我认为我的ember设置有问题。

3 个答案:

答案 0 :(得分:1)

我在Ember CLI上遇到了同样的错误,我在Brocfile.js中添加了这个:

app.import('vendor/ember-simple-auth/ember-simple-auth.js');                     
app.import('vendor/ember-simple-auth/ember-simple-auth-devise.js');

保存并重新启动服务器。

ember server

因此,请确保包含ember-simple-auth-devise.js并且您正在重新启动服务器。

答案 1 :(得分:0)

身份验证者注册为ember-simple-auth-authenticator:devise,而不是ember-simple-auth-authenticators:devise(没有's')。

答案 2 :(得分:0)

创建一个login.js控制器,ember g controller login并在那里添加验证码......

/controller/login.js

import Ember from 'ember';
import LoginControllerMixin from 'simple-auth/mixins/login-controller-mixin';

export default Ember.Controller.extend(LoginControllerMixin, {
  authenticator: 'simple-auth-authenticator:devise'
});