2015-01-11 25 views
0

我該如何構建具有客戶登錄的應用程序的路由器?Ember:使用用戶登錄的應用程序

應用程序需要登錄訪問以下途徑:書籍,書籍,章節,ChapterCategory章。

路線關於和家不需要用戶進行登錄。

App.Router.map(function() { 
    this.resource('application', function() { 
    this.resource('home'); 
    this.resource('books'); 
    this.resource('book', {path: '/:book_id'}); 
    this.resource('chapters'); 
    this.resource('chapterCategory', {path: 'chapter/:chapter_type'}); 
    this.resource('chapter', {path: '/:chapter_id'}); 
    this.resource('about', {path: '/aboutus' }); 
    }); 
    this.route('catchall', {path: '/*wildcard'}); 
}); 

當用戶登錄時,他的名字被添加到應用程序模板中實現的主菜單的右側。因此,應用程序路徑正在提取用戶信息。如果用戶未記錄,則應用程序模型不會返回任何內容。

問題:

  1. 它有什麼特殊的考慮在申請途徑定義模型 時要注意的?

  2. 怎麼可能,如果應用程序的路線不會嘗試提取用戶信息的應用程序模板,那裏的客戶名稱顯示在導航菜單中進行更新?

  3. 如何實現用戶登錄界面,在你自己的灰燼應用程序?你是否創建了一條用戶路由並嵌套了需要登錄的路由?

感謝

回答

1

我會推薦閱讀Authentication with EmberJS,或者看着Ember ToriiEmber Simple Auth add-on

回答您的問題:

  1. 做AUTH正確,你將有一個會話對象注入到你的路線和控制器。
  2. 您將擁有一個您的視圖可以使用的會話對象。
  3. 你可以保持簡單,只實現頂級登錄路線,但如果你真的想要的話,你的路線路徑可以是'/ user/login'。

經過多個版本的使用灰燼簡單的身份驗證後,我會傾向於從頭開始實現AUTH按照你最終少得多的運行時代碼的文章,你有充分的控制,可以支持多個會話不同的API端點(如第三方服務),如果您想支持敏感/高價值/高風險操作的權限升級,則根據您的應用程序要求可以減少爭奪。

+0

會話對象與使用'this.store.find()'從Store中提取的同一對象是否具有相同的特徵?我能否用類似於this.get('session.user.childObject1.childObject2')'的語法提取會話對象的childs對象? –

+0

會話對象維護您的會話狀態,並且可以引用任何要存儲在其中的模型作爲身份驗證過程的一部分。您可以在認證成功時使用Ember Data獲取當前用戶模型並將其存儲在會話中。正是這樣做的例子:http://blog.willrax.com/fetching-the-current-user-with-simple-auth/ –

相關問題