2012-07-12 28 views
2

我們使用Redmine 1.3.1(Rails 2 Mongrel)讓gmail openid工作了一年多。我已經將一個單獨的框升級到Redmine 2.0.3(Rails 3 Passenger),但是當我從舊實例切換到升級實例時,所有用戶都會收到Google授權應用程序屏幕的提示,如果他們單擊是,系統會提示您Redmine註冊屏幕。使用Passenger升級到Rails 3後,相對根目錄會導致不同的OpenID用戶令牌

我已經將rails會話secret_token與整個數據庫一起傳輸到升級後的實例。從Redmine 1.2升級到1.3.1時,我完全遵循了這個過程,並且完美運行。如果我在我們新升級的Redmine實例上註冊一個新帳戶,並轉到我在gmail中的用戶帳戶設置,則會看到Redmine有兩個授權的應用程序用於同一個URL。

它看起來像問題的根源是openid.realm身份驗證時傳遞給OpenID提供程序。

openid.realm=http://our.domain.com/redmine/ openid.return_to=http://our.domain.com/redmine/login?_method%3Dpost%26open_id_complete%3D1

到:當用戶發送給谷歌,網址參數已經從

openid.realm=http://our.domain.com openid.return_to=http://our.domain.com/redmine/login?_method%3Dpost

境界不包含在該/管理平臺升級實例,手動編輯瀏覽器URL後我已經確定添加此部分將修復問題。我能做些什麼才能使其生成正確的openid.realm,但仍然可以在Passenger中使用。在Apache級別處理相對根URL而不是Passenger中的rails級別?

使用的寶石:open_id_authentication,ruby-openid,rack-openid。

問候, 皮埃爾

回答

0

似乎並不像有一個優雅的解決方案。我猴子修補rack_openid gem強制ream_url。將其置於某個初始化程序中:

class Rack::OpenID 
    alias :super_realm_url :realm_url 

    def realm_url(req) 
    super_realm_url(req) + "/redmine/" 
    end 
end