2017-02-13 108 views
1

我是相當新的燼,並試圖用用戶登錄創建一個應用程序。我通過使用Auth0解決了這個問題,並且在輸入憑證後,用戶被重定向到protected.hbs。我的問題是,我如何讓其他模板也被保護。受保護的路線是這樣的:Ember保護多個模板

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() 
}); 

我試圖產生例如保護/用戶的頁面,但生成的用戶頁我不上似乎能夠從控制器訪問會話。當然,我可以爲每個頁面創建一個控制器,但似乎並不是解決這個問題的好方法。有沒有更好的保護頁面的更有效的方法?使受保護的/用戶頁面與其父節點保持固有的受保護狀態,並且還能夠訪問會話中的數據。

對不起,如果這是一個簡單的問題,但我真的是新來的,我一直無法在其他地方找到有關它的信息。

回答

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); 

受保護路線

但我看不出什麼大不了的。只要按照基本程序。

如果你需要控制器的東西,你創建控制器,你不必過度複雜的東西。