灰烬保护多个模板

时间:2017-02-13 10:39:23

标签: ember.js

我对ember很新,并且正在尝试使用用户登录创建应用程序。我通过使用Auth0解决了这个问题,输入凭据后,用户被重定向到protected.hbs。我的问题是我如何使登录中的其他模板也受到保护。受保护的路线如下所示:

import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin);

和受保护的控制器如下:

import Ember from 'ember';

export default Ember.Controller.extend({
  session: Ember.inject.service()
});

我尝试生成例如protected / user-page但是在生成的用户页面上,我似乎无法从控制器访问会话。当然,我可以为每个页面创建一个控制器,但这似乎不是解决它的好方法。是否有更好的更有效的方法来保护受保护的网页?使受保护/用户页面固有受保护状态的父级,并且还能够从会话中访问数据。

很抱歉,如果这是一个简单的问题,但我真的很新,我无法在其他地方找到相关信息。

1 个答案:

答案 0 :(得分:0)

import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin);

您必须在需要让用户登录的每条路线上执行此操作。如果您需要从电子邮件中获取数据,您只需在控制器上导入会话,但在大多数情况下,您只需要在应用程序控制器上我认为导航栏上有登录信息。

另一种方法是使用嵌套路由,例如

 this.route('protected', { path: '/protected' }, function() {
    this.route('posts', {path: '/posts'});
  });

然后在protected.hbs

{{outlet}}

然后你只需要在

上执行此操作
import Ember from 'ember';
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';

export default Ember.Route.extend(AuthenticatedRouteMixin);

在受保护的路线上

但我不知道什么是大问题。只需遵循基本程序即可。

如果您需要来自控制器的东西,您可以创建控制器,您不必过于复杂化。