更新:像@DustMason在他的回答中說,檢查真棒embercasts認證最佳做法。
爲了從服務器(Rails應用程序)的視圖(灰燼應用程序)我想使用令牌認證完全分離。我可能會在Rails服務器上使用Devise。
有道理。
我需要類似於Ember應用程序中的before_filter等價物,我可以檢查是否存在當前用戶以及該用戶是否具有身份驗證令牌集。
您可以在路由上添加enter
掛鉤,這大致相當於before_filter。但不知道這是檢查auth令牌的最佳位置。
Rails服務器將在每次調用時返回當前的認證令牌。
有道理。我們使用cookie-auth並通過調用/api/me
來獲取當前用戶配置文件,但兩者都應該有效。
如果它返回一個空驗證令牌,Ember應用程序應該檢測到並轉換到未驗證狀態,重定向到登錄視圖。
關於這種方法的事情是(與rails不同),「保護」訪問特定的燼路由並不容易。無論用戶什麼時候可以彈出JS控制檯並輸入他們想要的任何狀態。因此,而不是想着「用戶只能進入這個狀態,如果認證」考慮「假設未認證用戶以某種方式瀏覽到這條路線」
我懷疑我應該使用灰燼狀態機這一點,但我不確定如何繼續。任何人都解決了這個問題呢?
我們的認證需求非常簡單,所以我們沒有找到需要狀態機。相反,我們在ApplicationController上有一個isAuthenticated
屬性。當用戶未通過身份驗證時,我們使用application.hbs
中的此屬性將主視圖替換爲登錄表單。
{{if isAuthenticated}}
{{render "topnav"}}
{{outlet}}
{{else}}
{{render "login"}}
{{/if}}
從ApplicationRoute,我們獲取用戶的個人資料:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var profiles;
profiles = App.Profile.find({ alias: 'me' });
profiles.on("didLoad", function() {
return profiles.resolve(profiles.get("firstObject"));
});
return profiles;
}
});
那麼,我們的ApplicationController計算它是基於被返回的輪廓isAuthenticated財產。
我標記爲接受,因爲這讓我走上了正軌。你能否詳細說明你所做的評論:「有道理,我們使用cookie-auth並通過調用/ api/me獲取當前用戶配置文件,但兩者都應該工作。」什麼是cookie-auth?登錄後,您仍使用令牌認證並將令牌存儲在cookie中嗎? –
當然 - 猜測「cookie-auth」並不是真的。我的意思是我們正在使用rails cookie-store進行會話。我們的API期望用戶擁有一個有效的會話,並在請求/ api/me時返回current_user。 –
快速提示,但您提到的「'enter'」鉤現在已被棄用,取而代之的是「activate」(和相應的「deactivate'」) –