Ruby on rails Can';t使用重写的设备会话控件登录

Ruby on rails Can';t使用重写的设备会话控件登录,ruby-on-rails,devise,ruby-on-rails-5,rails-api,Ruby On Rails,Devise,Ruby On Rails 5,Rails Api,我正在使用Rails 5应用程序(仅限api),我为用户模型使用Desive,在mobile/auth/users中覆盖控件。我只能使用每个控制器的几个操作,例如,我可以通过cURL注册,但我不能登录,我不知道为什么。这里有一个例子: 控制器:sessions:'mobile/auth/users/sessions' 最重要的例子: def create super end 请求: curl -H 'Content-Type: application/json' -X POST htt

我正在使用Rails 5应用程序(仅限api),我为
用户
模型使用Desive,在
mobile/auth/users
中覆盖控件。我只能使用每个控制器的几个操作,例如,我可以通过
cURL
注册
,但我不能
登录
,我不知道为什么。这里有一个例子:

控制器:
sessions:'mobile/auth/users/sessions'

最重要的例子:

def create
    super
end
请求:

curl -H 'Content-Type: application/json' -X POST http://api.test.com:3000/mobile/users/sign_in -d '{"user" : { "email" : "user@example.com", "password" : "1234567890"}}'
错误:
401未经授权

正文:
{“错误”:“您需要登录或注册才能继续。”}

我正在尝试登录,并且我已经用正确的确认注册了,为什么控制器覆盖什么都不起作用?在正常的视图应用程序中,一切都很顺利

谢谢大家!

编辑:完整控制器

 class Mobile::Auth::Users::SessionsController < Devise::SessionsController

   # GET /resource/sign_in
   # def new
   #   super
   # end

   # POST /resource/sign_in
   def create
       super
   end

   # DELETE /resource/sign_out
   def destroy
     super
   end

   protected

   # If you have extra params to permit, append them to the sanitizer.
   def configure_sign_in_params
    devise_parameter_sanitizer.permit(:sign_in, keys: [:email])
    devise_parameter_sanitizer.permit(:sign_in, keys: [:password])
   end

   def serialize_options(resource)
     super
   end

   def auth_options
     super
   end

   def translation_scope
     super
   end

   private

   # Check if there is no signed in user before doing the sign out.
   #
   # If there is no signed in user, it will set the flash message and redirect
   # to the after_sign_out path.
   def verify_signed_out_user
     super
   end

   def all_signed_out?
     super
   end

   def respond_to_on_destroy
     super
   end
 end
class Mobile::Auth::Users::SessionController
编辑v2


好的,所以,问题是我不能用Desive通过CURL登录。即使我把cookie放在
-bcookie\u name
中,我也会得到
401状态码
。默认情况下,设计使用cookies来处理“会话”(服务器端没有)。如何使用
会话迁移服务器端的设计行为
?我应该自己编写代码,还是可以通过使用yet Desive来改变行为?

Hi。您能给我们看一下您的新会话控制器的其余部分吗?:)正如问题中所解释的,所有带有
super
关键字的方法都会覆盖控制器,以便将来提供自定义消息,但现在什么都没有。我真的不知道出了什么问题。过滤器前无
,\u过滤器后无
,\u过滤器后无
,仅为原始设计控制器。如果它实际上没有更多。。。那么这就是一个问题;)我希望看到任何过滤器,以及子分类。。。你能给我看看吗?Stack Overflow最适合那个老作者的格言:“秀不告诉”-不要告诉我没有什么可看的了。。。通过向我们展示来证明它;)Kewl谢谢:)那么-你能在
create
操作中添加一条调试语句来确保你真正做到了吗?您的代码可能正在其他地方(在before过滤器中)退出,而这些地方可能与此代码无关。。。我还注意到:
http://api.test.com:3000/mobile/users/sign_in
还有
Mobile::Auth::Users::sessioncontroller
->您的路由文件对此路由的具体说明是什么?您好,谢谢您抽出时间。通过调试,执行调用,问题是关于路由中的名称空间。现在,对同一个资源类重写控制器两次怎么样?如何设置路线?使用
范围
模块
时,由于前缀
增加了一倍,所以出现了错误。我需要为同一
用户
资源覆盖两次设备控制器。我应该手动设置所有路线,还是有一种方法可以使用
design\u来设置