Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 验证用户身份!Api版本化rails后方法不起作用_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2_Devise_Rails Api - Fatal编程技术网

Ruby on rails 验证用户身份!Api版本化rails后方法不起作用

Ruby on rails 验证用户身份!Api版本化rails后方法不起作用,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,devise,rails-api,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,Devise,Rails Api,我使用rails作为移动应用程序的后端。我尝试包含Api的版本。我使用Desive进行身份验证,现在使用authenticate\u用户!方法不起作用,它向我显示了错误 NoMethodError (undefined method `authenticate_user!' for #<Api::V1::CategoryController:0x00000103b95088>) NoMethodError(未定义的方法'authenticate\u user!' #) 我不知道我

我使用rails作为移动应用程序的后端。我尝试包含Api的版本。我使用Desive进行身份验证,现在使用authenticate\u用户!方法不起作用,它向我显示了错误

NoMethodError (undefined method `authenticate_user!' for
#<Api::V1::CategoryController:0x00000103b95088>)
NoMethodError(未定义的方法'authenticate\u user!'
#)
我不知道我哪里做错了。请帮我解决这个问题。感谢您的帮助

更新:

module Api
    module V1
class CategoryController < ApplicationController
    before_filter :authenticate_user!
模块Api
模块V1
类CategoryController<应用程序控制器
过滤前:验证用户身份!

我想,
验证用户身份添加到
应用程序控制器


如果您的Api控制器继承自另一个控制器(而不是
ApplicationController
),则需要手动将此帮助程序包含到Api控制器中。

在对Api进行版本控制后,我遇到了同样的问题。似乎Deviate在添加名称空间后,会更改身份验证用户验证\u api\u v1\u用户的方法和当前用户当前api\U v1\U用户。如果您使用如下名称空间,则会发生这种情况:

namespace :api do
  namespace :v1 do
    devise_for :users do
      resources :sessions, defaults: {format: :json}
   end
  end
end
为了解决这个问题,您必须在名称空间之前首先定义design_。这样,您就可以访问authenticate\u user和current\u user

devise_for :users, :controllers => { :sessions => "api/v1/sessions" }
devise_scope :user do
  namespace :api do
    namespace :v1 do
      resources :sessions, defaults: {format: :json}
    end
  end
end
resources :users

我希望有帮助

https://github.com/plataformatec/devise/blob/4681f81ce6b643cd55d7404500ee02ab18bab5df/lib/devise/controllers/helpers.rb#L46-L49
用于
用户的装置
型号?我有同样的问题,现在有什么解决方案吗?对不起。但我还是找不到解决办法,所以就没做。如果有一天你发现了什么,请让我知道。我是在尝试使用版本主义宝石中的Desive时发现的。以下是我的解决方案的要点,用于将设计路由保持在版本主义范围块内: