我試圖給使用設計的應用程序添加一個新的登錄條件。我重定向到sign_in後設計重定向到
如果請求來自不在我白名單上的IP,我想阻止登錄並重定向回到sign_in頁面,並用閃光消息解釋登錄來自外部IP。
重定向的工作原理,但我設置的flash消息並沒有返回到sign_in頁面。我認爲這是因爲Devise神祕地在重定向鏈中添加了另一個重定向(這將會中止Flash消息,因爲Flash消息僅適用於一個請求)。
這是我在做什麼:我檢查請求的IP是否在我的白名單。如果不是,我重定向到/users/sign_in
並設置flash通知以顯示用戶無法登錄的原因。
這是我迷路 ...重定向後/users/sign_in
發生時,用戶神祕地被轉到/
這反過來又重定向到/users/sign_in
。
上一次重定向回到sign_in頁面是我們爲用戶未登錄而自定義的頁面。但重定向回到根URL會讓我失望。我沒有重寫sessions_controller中的new
動作(這是發生這種神祕重定向的地方......),所以這是所有Devise邏輯,據我所知。
有沒有人猜測發生了什麼,有沒有一個設計配置會導致重定向,還是有另一種方式我應該處理這件事?
在我sessions_controller
class SessionsController < Devise::SessionsController
def create
unless ip_whitelist.include?(request.remote_ip)
redirect_to '/users/sign_in', :notice => "Cannot log in from this IP address."
return
end
...
end
end
你試過把你的重定向邏輯作爲'before_filter'嗎? – thesis
我剛剛做了,我沒有發現任何區別 – jordanstephens