在 Rails 6.1 中更改 has_secure_token 最小长度

Change has_secure_token minimum length in Rails 6.1

Rails 6.1 引入了安全令牌长度的设置,例如

has_secure_token :auth_token, length: 36

https://api.rubyonrails.org/classes/ActiveRecord/SecureToken/ClassMethods.html

此处设置了 MINIMUM_TOKEN_LENGTH = 24https://github.com/rails/rails/blob/master/activerecord/lib/active_record/secure_token.rb

我该如何覆盖它?我需要更短的令牌。

试试这个来覆盖这个....

config/initializers/active_record/secure_token.rb

中创建一个文件
# frozen_string_literal: true

module ActiveRecord
  module SecureToken
    MINIMUM_TOKEN_LENGTH = 2 // Add your minimum length
  end
end

注意:has_secure_token正在使用 SecureRandom::base58 生成最少 24 个字符的唯一令牌,因此极不可能发生冲突。

希望这个补丁对你有用。