0

我有一個用rails 2.3編寫的應用程序。此應用程序使用設計進行身份驗證。我需要與其他一些項目創建SSO,例如Worpdress。分享2.3和3.2之間的會話應用程序

由於新版本的設計包括omniauth支持,我需要創建一箇中間應用程序作爲auth端點。該工具只會驗證用戶並重定向到2.3應用程序,並記錄用戶。

這是流量:

用戶日誌到2.3應用程式=>請求到3.2應用程式=>的OAuth與外部系統=>記錄在2.3應用

我做所需的所有的配置。基本上共享相同的關鍵和祕密,以允許應用程序共享會話。這個問題是一個成功的loguin後,我得到的2.3應用程序出現以下錯誤:

Status: 500 Internal Server Error 
Session contains objects whose class definition isn\'t available. 
Remember to require the classes for all objects kept in the session. 
(Original exception: #{const_error.message} [#{const_error.class}]) 

我想這個錯誤是指我的會話中包含一些類,2.3的應用程序不知道如何實例。我只是不知道如何找到哪些類。

+0

?你的2.3應用程序中是否存儲了任何內容? – mlibby 2013-02-19 12:39:14

+0

我在兩個應用程序中使用Cookie。兩者都應該使用設計中的標準信息。 – Seoman 2013-02-20 16:24:12

回答

1

已解決。問題是在3.2 rails應用程序中添加了Flash消息。此消息的類是ActionDispatch :: Flash :: FlashHash,2.3應用程序的類是ActionController :: Flash :: FlashHash。

在我的情況下,解決方案是刪除調用set_flash_message。現在你解決了3.2 => 2.3也許你需要回到3.2應用程序。隨着2.3的應用程序將增加閃存的消息與「錯」類,你需要添加這個新類的定義上的3.2的應用程序:

# config/initializers/session_store.rb 
module ActionController 
    module Flash 
    class FlashHash < Hash 
     def method_missing(m, *a, &;b) 
     end 
    end 
    end 
end 

參考文獻:

的Rails 3.2 => 2.3。 This post

的Rails 2.3 => 3.2什麼是您使用會話存儲This post

相關問題