Ruby on rails 为什么Rails身份验证控制器路由复制身份验证参数?

Ruby on rails 为什么Rails身份验证控制器路由复制身份验证参数?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有注册和登录在rails控制器中发布路线注册需要电子邮件,密码和密码确认登录需要电子邮件和密码 以下是路线的外观: class Api::V1::AuthController@user,:jwt=>@token},:status=>:created 其他的 呈现json:{:error=>'未能创建用户'},:status=>:不可接受 终止 终止 def签名 @user=user.find_by(:email=>user_凭证参数[:email]) #身份验证方法来自bcrypt 如果@u

我有
注册
登录
在rails控制器中发布路线<代码>注册需要
电子邮件
密码
密码确认
<代码>登录需要
电子邮件
密码

以下是路线的外观:

class Api::V1::AuthController@user,:jwt=>@token},:status=>:created
其他的
呈现json:{:error=>'未能创建用户'},:status=>:不可接受
终止
终止
def签名
@user=user.find_by(:email=>user_凭证参数[:email])
#身份验证方法来自bcrypt
如果@user&&@user.authenticate(用户凭据参数[:密码])
@令牌=编码令牌({:user\u id=>@user.id})
呈现json:{:user=>@user,:jwt=>@token},:status=>:accepted
其他的
呈现json:{:error=>'Invalid credentials'},:status=>:unauthorized
终止
终止
私有的
def用户\u凭证\u参数
参数许可证(:电子邮件,:密码,:密码确认)
终止

结束
是,当发送到服务器的JSON没有指定任何根元素时,Ruby on Rails会自动使用当前控制器名称


您可以在中重新配置此行为。

是的,当发送到服务器的JSON未指定任何根元素时,Ruby on Rails将自动使用当前控制器名称

您可以在中重新配置此行为

rails是否自动添加该参数?如果是,原因是什么

当我在
sign
操作中抛出一个
binding.pry
时。然后键入
Thread.current.backtrace

我在
action\u controller/metal/params\u wrapper.rb
中看到了
process\u action
方法。这是

根据这一点,RubyonRails在包含请求的内容类型时会自动用当前控制器名称包装参数。就像@spickermann说的

rails是否自动添加该参数?如果是,原因是什么

当我在
sign
操作中抛出一个
binding.pry
时。然后键入
Thread.current.backtrace

我在
action\u controller/metal/params\u wrapper.rb
中看到了
process\u action
方法。这是

根据这一点,RubyonRails在包含请求的内容类型时会自动用当前控制器名称包装参数。就像@spickermann说的