मैं वर्तमान में एक आमंत्रण मॉडल बना रहा हूं जो भेजता हैएक लिंक के साथ ईमेल आमंत्रण। लिंक एक sha1 हैश के साथ "सुरक्षित" हैं। हालांकि, नियंत्रक हैश को सत्यापित करने में विफल रहता है और मैं "यह पता लगा सकता हूं कि क्यों ...
जेनरेट किए गए लिंक जैसे दिखते हैं
/projects/1/invitations/12?hash=c043b70c359a85e20cd9933c9cd37ef3f8943d7b
और नियंत्रक उन्हें सत्यापित करने का प्रयास करता है
def show
@invitation = Invitation.find(params[:id])
if @invitation.hash.to_s != params[:hash].to_s
redirect_to root_url
....
हर बार स्ट्रिंग तुलना विफल हो जाती है। मैंने जाँच की है, लेकिन तार पूरी तरह से समान हैं।
संपादित करें: कुछ डिबगिंग जानकारी
logger.debug params
logger.debug @invitation.hash
विकास में निम्नलिखित उत्पादन में परिणाम ।log
{"hash"=>"c043b70c359a85e20cd9933c9cd37ef3f8943d7b", "action"=>"show",
controller"=>"invitations", "project_id"=>"1", "id"=>"12"}
c043b70c359a85e20cd9933c9cd37ef3f8943d7b
उत्तर:
उत्तर № 1 के लिए 1देखो अगर @invitation.hash
वास्तव में फोन नहीं कर रहा है Object#hash
.