2011-10-26 45 views
7

我很難找到一個關於如何使用authlogic啓用單一訪問令牌認證的簡單教程。有一些文檔,但它不是很有幫助。Authlogic和單一訪問令牌

我加single_access_token到我的分貝,我加了這一點:

single_access_allowed_request_types :any 

我的會話課。但我仍然不明白用戶如何使用每次調用傳遞的憑證參數進行身份驗證。我的require_authentication過濾器之前做這樣的current_user標準檢查:

def current_session 
    return @current_session if @current_session 
    @current_session = Session.find 
    end 

    def current_user 
    @current_user = current_session && current_session.record 
    end 

但是,這足以工作? Session.find方法是否有助於記錄用戶是否基於我的參數,還是必須創建單獨的方法,實際檢查user_credentials參數是否存在,然後根據它查找用戶,然後將該用戶記入日誌中。我很困惑,如果我真的在每次使用SAT時「創建」一個新的會話,或者我只是在每次進行API調用之前在過濾器中設置當前用戶。

任何幫助將是驚人的!謝謝!

回答

2

我使用authlogic實現了一個single_access_token解決方案,我所要做的就是將single_access_allowed_request_types :all添加到UserSession模型中。

然後我添加了以下內容到控制器,我想允許single_access_token身份驗證。

def single_access_allowed? 
     ["some_action_1","some_action_2","some_action_3"].include?(action_name) 
    end 

它看起來像你缺少控制器代碼。所以如果你有兩個動作「get_user_info」和「update_user_info」,你會添加。

def single_access_allowed? 
     ["get_user_info","update_user_info"].include?(action_name) 
    end 
+0

丹尼爾,做了這項工作?如果不讓我知道你遇到了什麼問題,我會盡力幫助。謝謝! –

3

我唯一要做的事情,使這項工作是

  • 添加一個字段名爲single_access_token到我的用戶表
  • 添加一個名爲single_access_allowed?到每個控制器,其中單個接入應該是方法允許。

這種方法是這樣的:

# method for authlogic: defines for which action the single-access-token can be used 
def single_access_allowed? 
    (action_name == "deliver") || (action_name == "delivery_status") 
end 

我沒有在UserSessionsControllerUserSession對象添加任何東西。 Authlogic爲你處理。對於單一訪問令牌,只有一個請求被認證,所以沒有持久會話。每個請求必須發送單一訪問令牌。因此,名稱:令牌獲得單一訪問:)

希望這有助於。

0

authlogic的源代碼是單個訪問令牌上的最佳文檔。 This is the specific section that discusses it

您將需要在您嘗試讓用戶訪問的控制器中添加一個名爲single_access_allowed?的私有方法。單一訪問令牌默認作爲URL編碼參數使用名稱user_credentials傳遞。所以要打你的控制器沒有登錄它將是/your_route/?user_credentials=xxxxxx