0

使用Authlogic的HTTP Basic auth時,UserSession.find返回nil,因爲會話似乎沒有設置。因此,引用通常的current_user方法(如下所示)的declarative_authorization無法找到當前用戶。Authlogic HTTP Basic UserSession.find返回nil,表示declarative_authorization無法獲取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 

是否有可能創建一個會話時通過HTTP用戶基本AUTHS(即使該會議將只能維持到請求關閉),或者是有這樣做的更好的辦法?

+0

搬到設計,我有完全相同的問題。使用HTTP基本身份驗證,current_user是無 – 2010-09-28 11:08:21

回答

0

已經擺弄設計結束,現在一切都似乎是工作,只要當使用的ActiveResource我做網站= 「HTTP://用戶名:密碼@域」,而不是:

site = "http://domain" 
username = "user" 
password = "password" 

不工作。我沒有花時間去挖掘原因。

0

顛覆這一點。我完全有同樣的問題(與相同的寶石 - authlogic + declarative_auth)。

找到了我的解決方案,所有我需要的是下面的代碼複製到authorization_rules.rb

privileges do 
    privilege :manage, :includes => [:create, :read, :update, :delete] 
    privilege :read, :includes => [:index, :show] 
    privilege :create, :includes => :new 
    privilege :update, :includes => :edit 
    privilege :delete, :includes => :destroy 
end 
+0

我不認爲這是同一個問題。 Mine與授權無關,但authlogic不返回current_user對象。 – 2010-10-15 11:16:00