所以我試圖限制登錄程序,以便當用戶使用錯誤的 IP 地址登錄時,不會創建會話,我會顯示 f flash 來解釋發生了什么。
我的大部分邏輯都有效,但問題是,如果條件在 else 子句中結束,那么無論如何都會創建會話。
class Employees::SessionsController < Devise::SessionsController
before_action :validate_ip, only: [:create]
layout 'devise'
def validate_ip
# Pseudo code
if ENV['ip] == remote_ip
create
else
flash[:alert] = "Ip does not match"
end
end
end
我沒有做很多設計,所以我不知道正確的方法。
但是這段代碼(和以前的嘗試)作業正常,除了無論如何,會話繼續被創建。
uj5u.com熱心網友回復:
您需要在過濾器中進行重定向或渲染validate_ip:如果您只是從過濾器回傳,devise將繼續正常執行,因此用戶將登錄。
像redirect_to root_url, alert: "Ip does not match"在你的else分支上的東西應該可以作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440707.html
