如果未登录,则禁止某些(大多数)路线

Rud*_*udi 2 ember.js ember-router

我在整个网站上使用Ember,甚至是静态页面.

我有一个设计api设置,使用user.new,user.login和user.edit来创建,登录或编辑现有帐户.

任何用户都可以去

http://hostname/user/edit
Run Code Online (Sandbox Code Playgroud)

看到编辑屏幕.我真的希望只有在用户登录时才能实现此目的.如果不是,那么该路由应该例如重定向到登录页面.

有没有办法做到这一点?

Rya*_*nJM 5

你可以redirect在你的路线内.在那里,您可以有条件地检查用户是否已登录.如果不是,则可以转移到其他位置.

有关重定向的详细信息,请参阅指南.

更新

这是AuthenticatedRoute我使用的一个例子.对于我要进行身份验证的路由,我只是从这个路由子类.

var AuthenticatedRoute = Ember.Route.extend({
  session: Ember.inject.service(),
  ...

  beforeModel: function(transition) {
    if (Ember.isEmpty(this.get('session').get('token'))) {
      this.get('flashNotification').notify({
        title: "You need to sign in first."
      });
      return this.transitionTo('sign-in');
    }
  },
Run Code Online (Sandbox Code Playgroud)

希望这能给出一些好的方向.

如果您需要更多资源,请查看: