加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 设计令牌验证错误:未设置Devise.secret_key

发布时间:2020-12-17 02:55:20 所属栏目:百科 来源:网络整理
导读:我目前正在使用Devise Token Auth( https://github.com/lynndylanhurley/devise_token_auth)gem并使其在开发中运行良好.但是,在我的生产环境中,当我运行rake db:migrate时,我收到以下错误: rake aborted!Devise.secret_key was not set. Please add the fo
我目前正在使用Devise Token Auth( https://github.com/lynndylanhurley/devise_token_auth)gem并使其在开发中运行良好.但是,在我的生产环境中,当我运行rake db:migrate时,我收到以下错误:

rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:

  config.secret_key = 'my secret key'

Please ensure you restarted your application after installing Devise or setting the key.
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/devise-3.4.1/lib/devise/rails/routes.rb:480:in `raise_no_secret_key'
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/devise-3.4.1/lib/devise/rails/routes.rb:209:in `devise_for'
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/devise_token_auth-0.1.31/lib/devise_token_auth/rails/routes.rb:25:in `mount_devise_token_auth_for'
/Users/karimbutt/Development/projects/haubby/backend/config/routes.rb:3:in `block in <top (required)>'
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:423:in `instance_exec'
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:423:in `eval_block'
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/actionpack-4.2.0/lib/action_dispatch/routing/route_set.rb:401:in `draw'
/Users/karimbutt/Development/projects/haubby/backend/config/routes.rb:1:in `<top (required)>'

当我添加密钥时,如错误消息所示,我收到以下错误:

rake aborted!
NoMethodError: undefined method `secret_key=' for DeviseTokenAuth:Module
/Users/karimbutt/Development/projects/haubby/backend/config/initializers/devise_token_auth.rb:12:in `block in <top (required)>'
/Users/karimbutt/.rvm/gems/ruby-2.1.2/gems/devise_token_auth-0.1.31/lib/devise_token_auth/engine.rb:23:in `setup'
/Users/karimbutt/Development/projects/haubby/backend/config/initializers/devise_token_auth.rb:1:in `<top (required)>'

我尝试了以下内容
– 重新安装宝石
– 设置检查以查看Devise配置文件中的Rails.env ==“production”
– 更新了宝石
– 使用发电机重新安装设备
– 删除表并使用生成器创建的新迁移重新迁移

当我按照请求输入密钥时,这是我的初始化器/ devise_auth.rb文件:

DeviseTokenAuth.setup do |config|
  # By default the authorization headers will change after each request. The
  # client is responsible for keeping track of the changing tokens. Change
  # this to false to prevent the Authorization header from changing after
  # each request.
  #config.change_headers_on_each_request = true

  # By default,users will need to re-authenticate after 2 weeks. This setting
  # determines how long tokens will remain valid after they are issued.
  #config.token_lifespan = 2.weeks

  config.secret_key = 'my secret key'

  # Sometimes it's necessary to make several requests to the API at the same
  # time. In this case,each request in the batch will need to share the same
  # auth token. This setting determines how far apart the requests can be while
  # still using the same auth token.
  #config.batch_request_buffer_throttle = 5.seconds

  # This route will be the prefix for all oauth2 redirect callbacks. For
  # example,using the default '/omniauth',the github oauth2 provider will
  # redirect successful authentications to '/omniauth/github/callback'
  # config.omniauth_prefix = "/omniauth"
end

任何想法如何解决这一问题?为什么这只发生在生产中?

解决方法

根据文档,您需要添加config.secret_key =’我的密钥’

config/initializers/devise_token_auth.rb

FWIW,您可能不希望在代码中保存秘密.使用

config.secret_key = ENV[ 'DEVISE_TOKEN_AUTH_SECRET_KEY' ]

编辑:我认为问题是你需要设置Devise.secret_key,而不是Devise Token Auth密钥.是否有Devise初始化程序?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读