【问题标题】:Ember-Simple-Auth: Overloading sessionAuthenticationSucceededEmber-Simple-Auth:重载 sessionAuthenticationSucceeded
【发布时间】:2014-06-23 18:50:26
【问题描述】:

我目前正在尝试覆盖 Ember.SimpleAuth.ApplicationRouteMixin 类中的 sessionAuthenticationSucceeded,以便我可以通过传入的模型转换到我的 routeAfterAuthentication

基本上是this.transitionTo(Configuration.routeAfterAuthentication, model);,但即使在执行Ember.SimpleAuth.ApplicationRouteMixin.reopen() 之后,我对函数的覆盖也不会被调用。那么我对这一切都错了吗? Mixins不能以这种方式重新打开吗?或者我应该以不同的方式将模型传递给routeAfterAuthentication 转换。

编辑:愚蠢的声誉限制,我自己会回答这个问题,但显然要等 8 个小时,所以现在是这个答案:

好吧,不完全确定这是否是正确的方法,但它确实有效。我正在查看这个示例:custom-server,我最终这样做是为了完成我想要的。

var applicationRoute = container.lookup('route:application');
var session = container.lookup('ember-simple-auth-session:main');
var store = container.lookup('store:main');

session.on('sessionAuthenticationSucceeded', function() {
    var user = store.find('user', session.get('user_id'));
    container.lookup('controller:application').set('content', user)
    applicationRoute.transitionTo('profile.resume', user);
});

【问题讨论】:

    标签: ember.js ember-simple-auth


    【解决方案1】:

    最简单的解决方案是在应用程序路由上简单地定义 sessionAuthenticationSucceeded,而不是重新打开 mixins:

    /// routes/application.js
    import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin';
    
    export default Ember.Route.extend(ApplicationRouteMixin, {
      actions: {
        sessionAuthenticationSucceeded: function() {
          …
        }
      }
    })
    

    【讨论】:

    • 我应该回来编辑这个,但我找到了一个基于您的示例的解决方案,我将在下面添加作为答案。
    • 是的,但是如果您不使用 mixins,则应使用该解决方案。如果您使用的是 mixins,那么下面的解决方案会非常复杂。
    • 这是有道理的,我确实注意到,在我当前的解决方案中,transitionTo 首先在 RouteMixin 中启动,然后在 session.on 中中止并重做。感谢您的提示!
    【解决方案2】:

    嗯,不完全确定这是否是正确的方法,但它确实有效。我正在查看这个示例:custom-server,我最终这样做是为了完成我想要的。

    var applicationRoute = container.lookup('route:application');
    var session = container.lookup('ember-simple-auth-session:main');
    var store = container.lookup('store:main');
    
        session.on('sessionAuthenticationSucceeded', function() {
            var user = store.find('user', session.get('user_id'));
            container.lookup('controller:application').set('content', user)
            applicationRoute.transitionTo('profile.resume', user);
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      相关资源
      最近更新 更多