我正在處理一個流程,如果User未登錄,我將config在 cookie 中存盤一個哈希值,以便在User登錄后檢索,以便流程可以繼續。
啟動控制器:
def index
if current_user.nil?
cookies.signed[:config] = config
redirect_to new_session_path
end
end
會話控制器:
def new
cookies.signed[:config].present? # true
end
def create
# authentication logic
redirect_to admin_users_path
end
用戶控制器:
def index
cookies.signed[:config].present? # false
end
我可以SessionsController new在第一次重定向后從操作中檢索所述 cookie ,但是在User登錄并再次重定向到最終目的地(create操作)后,cookie 似乎被洗掉,因為cookies.signed[:config]回傳nil
我沒有明確洗掉 cookie,我已經嘗試使用session[:config] = config而不是cookies.signed相同的結果。
是否可以通過多次重定向或User登錄來保存 cookie ?
或者我是否必須在每個控制器操作中設定 cookie,以便它一直傳遞到我實際使用它的地方?
編輯:問題是我們的通用登錄控制器在子域下,app.ourapp.com而登錄User被重定向到business.ourapp.com.
如果在 cookie 創建期間未指定域,request.domain則默認使用 ,因此從未為business.ourapp.com.
解決方法是domain在 cookie 創建中傳遞一個引數,因此它是為app.ourapp.com和business.ourapp.com( cookies.signed(:cookie_name, domain: "ourapp.com")
uj5u.com熱心網友回復:
問題是我們的通用登錄控制器在子域下,app.ourapp.com而登錄User被重定向到business.ourapp.com.
如果在 cookie 創建期間未指定域,request.domain則默認使用 ,因此從未為business.ourapp.com.
修復方法是在 cookie 創建中傳遞一個域引數,因此它是為app.ourapp.com和business.ourapp.com( cookies.signed(:cookie_name, domain: "ourapp.com")
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/384609.html
