我目前正在构建一个邀请模型,通过链接发送电子邮件邀请。链接使用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
在development.log
中产生以下输出{"hash"=>"c043b70c359a85e20cd9933c9cd37ef3f8943d7b", "action"=>"show",
controller"=>"invitations", "project_id"=>"1", "id"=>"12"}
c043b70c359a85e20cd9933c9cd37ef3f8943d7b