我使用Ember.SimpleAuth和设计包。我以前曾经多次使用过装备和导轨,但我很贪婪。此外,我开始怀疑是否应该通过令牌认证为Ember应用程序设计......无论如何,这是我的代码。
更新
2我注意到的具体事项:
我已经清理了我的资产并使用了最新的ember-simple-auth.js。我似乎没有authenticatorFactory,因为以下行是' undefined'在' var Session'里面定义:
_this.container.lookup(authenticatorFactory)
我觉得我应该调用ember-simple-auth-devise.js中的authenticate方法,但根据我的控制台,该文件永远不会被触及。这是应该的样子吗?
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设置有问题。
答案 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'
});