在Ember-Cli应用程序中使用Ember-Simple-Auth,我试图要求对应用程序中的几乎每条路径进行身份验证。我不想在每条路线上都使用AuthenticatedRouteMixin,因为我不想定义每条路线。因此,我将mixin添加到ApplicationRoute中。

但是,这会导致无限循环,因为显然登录路由是从同一ApplicationRoute扩展而来的,因此现在受到保护。

我如何在除LoginRoute之外的所有其他路由中包括此混入?

最佳答案

我怀疑您在每条路径上都需要它,而不是您仅需要它作为已认证资源的大门。

App.Router.map(function(){
  this.route('login'); // doesn't need it
  this.resource('a', function(){ <-- need it here
    this.resource('edit');       <-- this is protected by the parent route
  });
  this.resource('b', function(){ <-- and here
    this.resource('edit');       <-- this is protected by the parent route
  });
});

或者您可以将其更深一层,并创建一条包含所有内容的路线:
App.Router.map(function(){
  this.route('login'); // doesn't need it
  this.resource('authenticated', function(){ <-- put it here
    this.resource('a', function(){ <-- this is protected by the parent route
      this.resource('edit');       <-- this is protected by the grandparent route
    });
    this.resource('b', function(){ <-- this is protected by the parent route
      this.resource('edit');       <-- this is protected by the grandparent route
    });
  });
});

08-15 22:52