Ruby on rails Can';t使用重写的设备会话控件登录
我正在使用Rails 5应用程序(仅限api),我为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
用户
模型使用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来设置
?