错误 Nothing handled the action 'sessionInvalidationSucceeded' using Simple Auth Ember JS

Error Nothing handled the action 'sessionInvalidationSucceeded' using Simple Auth Ember JS

所以在过去的一周里,我一直在通过我的 ember 设置一个授权管理器,终于让它工作了。但是,我在使用户无效时仍然遇到错误。

没有处理该操作 'sessionInvalidationSucceeded'

不知道处理错误的最佳方法是什么?

import Ember from 'ember';
import DS from 'ember-data';

export default Ember.Object.extend({
 authenticate: function(controller, user) {
  var app = this.container.lookup('controller:application');
  var session = app.get('session').authenticate('simple-auth-authenticator:oauth2-password-grant', user);
  session.then(function() {
    console.log('Session Started');
    controller.transitionToRoute('brands');
  });
 },
 endSession: function() {
  var app = this.container.lookup('controller:application');
  var session = app.get('session').invalidate();
  session.then(function() {
   app.store = DS.Store.create();
   console.log('Session Ended');
   app.transitionToRoute('index');
   app.store.destroy();
  });
 }
});


import Ember from 'ember';

export default Ember.Controller.extend({
 actions: {
   sessionEnded: function() {
    this.authManagerService.endSession();   
   }
 },
 currentUser: function() {
  return this.store.find('user', this.session.get('user_id');
 }.property('@each.user')
});

您需要在您正在验证的路由中包含 Simple Auth Route mixin

import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';

或在您的初始化程序中处理操作

Ember.Application.initializer({
  name:       'authentication',
  after:      'simple-auth',
  initialize: function(container, application) {
    var applicationRoute = container.lookup('route:application');
    var session          = container.lookup('simple-auth-session:main');
    // handle the session events
    session.on('sessionInvalidationSucceeded', function() {
      applicationRoute.transitionTo('index');
    });
 }
});

看看api,很有帮助 http://ember-simple-auth.com/ember-simple-auth-api-docs.html#SimpleAuth-ApplicationRouteMixin-sessionInvalidationSucceeded