Ruby on rails 验证用户身份!Api版本化rails后方法不起作用
我使用rails作为移动应用程序的后端。我尝试包含Api的版本。我使用Desive进行身份验证,现在使用authenticate\u用户!方法不起作用,它向我显示了错误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!' #) 我不知道我
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时发现的。以下是我的解决方案的要点,用于将设计路由保持在版本主义范围块内: