Ruby on rails 如何自定义在Desive-Rails 3中的:token_authenticable中生成的令牌的长度?

Ruby on rails 如何自定义在Desive-Rails 3中的:token_authenticable中生成的令牌的长度?,ruby-on-rails,ruby-on-rails-3,devise,Ruby On Rails,Ruby On Rails 3,Devise,我生成的令牌似乎约为20个字符,如何将长度更改为其他长度 我检查了designe.rb文件,并尝试了以下两种方法: config.token_authentication_key = :access_key config.token_authenticatable.length = 40 产生此错误: config/initializers/devise.rb:110:in `block in <top (required)>': undefined method `tok

我生成的令牌似乎约为20个字符,如何将长度更改为其他长度

我检查了
designe.rb
文件,并尝试了以下两种方法:

config.token_authentication_key = :access_key    
config.token_authenticatable.length = 40
产生此错误:

config/initializers/devise.rb:110:in `block in <top (required)>': undefined method `token_authenticatable' for Devise:Module (NoMethodError)
/config/initializers/devise.rb:110:in `block in <top (required)>': undefined method `length=' for :access_key:Symbol (NoMethodError)
产生此错误:

config/initializers/devise.rb:110:in `block in <top (required)>': undefined method `token_authenticatable' for Devise:Module (NoMethodError)
/config/initializers/devise.rb:110:in `block in <top (required)>': undefined method `length=' for :access_key:Symbol (NoMethodError)
/config/initializers/designe.rb:110:in'block-in':未定义的方法'length='for:access\u key:Symbol(NoMethodError)
当我试图运行控制台时,两个都给了我错误


是否仍要执行此操作?

Desive不提供设置此令牌长度的功能。您必须覆盖模型上的
生成\u令牌
方法,以更改此令牌的结果。

我实现了更改
重置\u令牌密码
长度覆盖
友好\u令牌
方法。例如:


模块设计
def自我友好令牌(_长度=20)
SecureRandom.urlsafe_base64(5.tr('lIO0','sxyz'))
结束
结束

(请记住,标记在db中是散列的,因此即使您成功地设置了较短的代码,如果您执行
user.reset\u password\u token
,您也会看到一个长代码,它是散列的标记,而不是真正的标记。)