【问题标题】:Does not pass authorization (devise auth token)未通过授权(设计身份验证令牌)
【发布时间】:2018-11-08 19:55:05
【问题描述】:

我正在使用 Devise auth token gem 来验证我的 rails 应用程序的某些部分。但是当我尝试登录时,出现以下错误:

POST http://localhost:3000/auth/sign_in500(内部服务器错误)

这是完整的跟踪:

在 2018 年 5 月 30 日 09:29:36 为 10.12.4.5 开始 POST "/auth/sign_in" +0500 DeviseTokenAuth::SessionsController#create 作为 JSON 参数处理:{"login"=>"admin", "password"=>"[FILTERED]", "session"=>{"login"=>"admin", "password"=>"[FILTERED]"}} 完成 500 14 毫秒内的内部服务器错误(ActiveRecord:0.0 毫秒)

NoMethodError(未定义的方法“每个”为

):

devise_token_auth (0.1.43) 应用程序/控制器/devise_token_auth/application_controller.rb:35:in params_for_resource' devise_token_auth (0.1.43) app/controllers/devise_token_auth/sessions_controller.rb:129:in resource_params' devise_token_auth (0.1.43) 应用程序/控制器/devise_token_auth/sessions_controller.rb:13:in create' actionpack (5.1.6) lib/action_controller/metal/basic_implicit_render.rb:4:in send_action' 动作包 (5.1.6) lib/abstract_controller/base.rb:186:in process_action' actionpack (5.1.6) lib/action_controller/metal/rendering.rb:30:in process_action' actionpack (5.1.6) lib/abstract_controller/callbacks.rb:20:in block in process_action' activesupport (5.1.6) lib/active_support/callbacks.rb:131:in run_callbacks' actionpack (5.1.6) lib/abstract_controller/callbacks.rb:19:in process_action' actionpack (5.1.6) lib/action_controller/metal/rescue.rb:20:inprocess_action' 动作包(5.1.6) lib/action_controller/metal/instrumentation.rb:32:in block in process_action' activesupport (5.1.6) lib/active_support/notifications.rb:166:inblock in instrument' 积极支持 (5.1.6) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (5.1.6) lib/active_support/notifications.rb:166:in instrument' actionpack (5.1.6) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (5.1.6) lib/action_controller/metal/params_wrapper.rb:252:inprocess_action' 活动记录(5.1.6) lib/active_record/railties/controller_runtime.rb:22:in process_action' actionpack (5.1.6) lib/abstract_controller/base.rb:124:inprocess' 动作包 (5.1.6) lib/action_controller/metal.rb:189:in dispatch' actionpack (5.1.6) lib/action_controller/metal.rb:253:indispatch' actionpack (5.1.6) lib/action_dispatch/routing/route_set.rb:49:in dispatch' actionpack (5.1.6) lib/action_dispatch/routing/route_set.rb:31:inserve' actionpack (5.1.6) lib/action_dispatch/routing/mapper.rb:16:in block in <class:Constraints>' actionpack (5.1.6) lib/action_dispatch/routing/mapper.rb:46:inserve' actionpack (5.1.6) lib/action_dispatch/journey/router.rb:50:in block in serve' actionpack (5.1.6) lib/action_dispatch/journey/router.rb:33:ineach' actionpack (5.1.6) lib/action_dispatch/journey/router.rb:33:in serve' actionpack (5.1.6) lib/action_dispatch/routing/route_set.rb:844:in call'warden (1.2.7) lib/warden/manager.rb:36:in block in call' warden (1.2.7) lib/warden/manager.rb:35:incatch'warden (1.2. 7) lib/warden/manager.rb:35:in call' rack (2.0.5) lib/rack/etag.rb:25:in call' rack (2.0.5) lib/rack/conditional_get.rb:38:in call' rack (2.0.5) lib/rack/head.rb:12:incall' activerecord (5.1.6) lib/active_record/migration.rb:556:in call' actionpack (5.1.6) lib/action_dispatch/middleware/callbacks.rb:26:inblock in call' activesupport (5.1.6) lib/active_support/callbacks.rb:97:in run_callbacks' actionpack (5.1.6) lib/action_dispatch/middleware/callbacks.rb:24:incall' 动作包 (5.1.6) lib/action_dispatch/middleware/executor.rb:12:in call' actionpack (5.1.6) lib/action_dispatch/middleware/debug_exceptions.rb:59:incall' 动作包(5.1.6) lib/action_dispatch/middleware/show_exceptions.rb:31:in call' railties (5.1.6) lib/rails/rack/logger.rb:36:incall_app' railties (5.1.6) lib/rails/rack/logger.rb:24:in block in call' activesupport (5.1.6) lib/active_support/tagged_logging.rb:69:inblock in 标记' activesupport (5.1.6) lib/active_support/tagged_logging.rb:26:in tagged' activesupport (5.1.6) lib/active_support/tagged_logging.rb:69:intagged' railties (5.1.6) lib/rails/rack/logger.rb:24:in call' actionpack (5.1.6) lib/action_dispatch/middleware/remote_ip.rb:79:incall' actionpack (5.1.6) lib/action_dispatch/middleware/request_id.rb:25:in call' rack (2.0.5) lib/rack/runtime.rb:22:incall' activesupport (5.1.6) lib/active_support/cache/strategy/local_cache_middleware.rb:27:in call' actionpack (5.1.6) lib/action_dispatch/middleware/executor.rb:12:incall' 动作包 (5.1.6) lib/action_dispatch/middleware/static.rb:125:in call' rack (2.0.5) lib/rack/sendfile.rb:111:incall' rack-cors (1.0.2) lib/rack/cors.rb:97:in call' railties (5.1.6) lib/rails/engine.rb:522:incall' puma (3.11.4) lib/puma/configuration.rb:225:in call' puma (3.11.4) lib/puma/server.rb:632:inhandle_request' puma (3.11.4) lib/puma/server.rb:446:in process_client' puma (3.11.4) lib/puma/server.rb:306:inblock in run' puma (3.11.4) lib/puma/thread_pool.rb:120:in `block in spawn_thread'

我该如何解决这个错误?

application_controller.rb:

class ApplicationController < ActionController::API

  include DeviseTokenAuth::Concerns::SetUserByToken
  before_action :configure_permitted_parameters, if: :devise_controller?


  protected

  def configure_permitted_parameters

    devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:login, :first_name, :patronymic, :last_name, :email, :password, :password_confirmation) }    
    devise_parameter_sanitizer.permit(:sign_in) { |u| u.permit(:login, :password) }    
    devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:password, :password_confirmation, :current_password) }    

  end
end

user.rb:

class User < ActiveRecord::Base
  self.table_name = 'DASHBOARD.V_L_USERS'
  self.primary_key = 'user_id'
  devise :database_authenticatable, :validatable, :authentication_keys => [:login]
  include DeviseTokenAuth::Concerns::User

  has_many :permission_references, as: :source
  accepts_nested_attributes_for :permission_references, :allow_destroy => true
  has_many :user_roles
  has_many :spr_dashboards, foreign_key: 'l_users_id'
  accepts_nested_attributes_for :user_roles, :allow_destroy => true

  def email_required?
    false
  end

  def password_required?
    false
  end

  def is_participant
    (read_attribute(:is_participant) == "Y")
  end

  def is_participant=(value)
    write_attribute(:is_participant, (value == "1") ? "Y" : "N")
  end

  def children_users_ids
    ActiveRecord::Base.connection.select_values <<-SQL.strip_heredoc
      SELECT l_users_id_right
      FROM DASHBOARD.V_L_USERS_RIGHTS
      WHERE l_users_id = #{user_id}
    SQL
  end
end

routes.rb:

Rails.application.routes.draw do
  mount_devise_token_auth_for 'User', at: 'auth'
end

【问题讨论】:

    标签: ruby-on-rails ruby devise


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 2018-07-01
      • 2021-05-23
      • 1970-01-01
      • 2020-06-17
      • 2018-01-20
      • 2015-11-04
      • 1970-01-01
      相关资源
      最近更新 更多