0

我目前正在构建一个发送带有链接的电子邮件邀请的邀请模型。链接使用 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
4

1 回答 1

1

看看@invitation.hash是不是真的在打电话Object#hash

于 2012-05-03T13:09:10.040 回答