我使用authlogic來認證用戶。在我的控制器,我使用CURRENT_USER,定義(如記錄)如下:使用declarative_authorization和authlogic確定current_user
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
我也用declarative_authorization管理當前用戶的權限。在正常的運行時場景中,所有工作都正常,但是當我創建使用請求語句(如「get_with」)的功能測試時,控制器中的current_user爲零。我查看了declarative_authorization測試助手代碼,發現在這種情況下,declarative_authorization gem實際上將當前用戶存儲在Authorization.current_user(反過來來自Thread.current [「current_user」])中。所以在不同場景下處理當前用戶的方式似乎相當混亂。
我的問題:在正常運行時和測試場景中找到current_user的適當方式是什麼?
是的,我確實嘗試過。但這是另一種方式:在功能測試中,Authorization.current_user包含正確的用戶,但c.current_user == nil。所以這個聲明不會起作用... – 2010-07-29 11:52:48
一個問題你如何在測試中維護用戶會話?嘗試調試會話可能是因爲某種原因現在持續存在。 – 2010-07-29 12:07:42
就我而言,要使用authlogic登錄用戶,您必須通過UserSession.create(user(:admin))創建他的會話,然後authlogic當前用戶才能工作。 – Draiken 2010-07-29 12:47:20