我对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但是在生成的用户页面上,我似乎无法从控制器访问会话。当然,我可以为每个页面创建一个控制器,但这似乎不是解决它的好方法。是否有更好的更有效的方法来保护受保护的网页?使受保护/用户页面固有受保护状态的父级,并且还能够从会话中访问数据。
很抱歉,如果这是一个简单的问题,但我真的很新,我无法在其他地方找到相关信息。
答案 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);
在受保护的路线上
但我不知道什么是大问题。只需遵循基本程序即可。
如果您需要来自控制器的东西,您可以创建控制器,您不必过于复杂化。