ActiveSupport::MessageVerifier::InvalidSignature: ActiveSupport::MessageVerifier::InvalidSignature Rails 5 中的错误

问题描述 投票:0回答:6

在迁移到 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)
ruby-on-rails ruby ruby-on-rails-5
6个回答
9
投票

就我而言,我将

undefined
(字符串)发送到
video
字段(ActiveStorage)


7
投票

就我而言,我使用了附件的名称

has_one_attached :report

已在实体中使用(作为表列名称)


2
投票

User.last.encryptedpass (User.last.encrypted_password) 您使用的是设计还是我们的加密方法?

如果消息未使用相同的密钥进行签名或未进行 Base64 编码,则引发 InvalidSignature。

http://api.rubyonrails.org/v5.1/classes/ActiveSupport/MessageVerifier.html


1
投票

在我的例子中,我使用

form_tag
将图像发送到后端。使用
form_with
解决了我的问题。


1
投票

就我而言,发生这种情况是因为我没有包括

enctype="multipart/form-data"


0
投票

Rails 7 在这里。我在浏览器控制台中找到了该错误的最佳解释。它说表单包含一个文件字段,但缺少

method="post"
enctype="multipart/form-data"
。现在它可以与以下表单标签一起使用:

form_for(@myitem, 
  html: { method: :post, class: 'myform', enctype: "multipart/form-data" }, 
  data: { turbo: false }) do...
© www.soinside.com 2019 - 2024. All rights reserved.