在迁移到 Rails 5 之前,它工作得很好,但是当我迁移到 Rails 5.1.1 时,它给了我这样的错误
ActiveSupport::MessageVerifier::InvalidSignature: ActiveSupport::MessageVerifier::InvalidSignature
我使用了与之前版本的 Rails 中使用的相同的密钥。
例如。
crypt = ActiveSupport::MessageEncryptor.new(Rails.configuration.secret_key_base)
执行以下行后,我收到上述错误。
@password = crypt.decrypt_and_verify(User.last.encryptedpass)
就我而言,我将
undefined
(字符串)发送到 video
字段(ActiveStorage)
就我而言,我使用了附件的名称
has_one_attached :report
已在实体中使用(作为表列名称)
User.last.encryptedpass (User.last.encrypted_password) 您使用的是设计还是我们的加密方法?
如果消息未使用相同的密钥进行签名或未进行 Base64 编码,则引发 InvalidSignature。
http://api.rubyonrails.org/v5.1/classes/ActiveSupport/MessageVerifier.html
在我的例子中,我使用
form_tag
将图像发送到后端。使用 form_with
解决了我的问题。
就我而言,发生这种情况是因为我没有包括
enctype="multipart/form-data"
Rails 7 在这里。我在浏览器控制台中找到了该错误的最佳解释。它说表单包含一个文件字段,但缺少
method="post"
和 enctype="multipart/form-data"
。现在它可以与以下表单标签一起使用:
form_for(@myitem,
html: { method: :post, class: 'myform', enctype: "multipart/form-data" },
data: { turbo: false }) do...