warden authentication returning 401

Sur*_*rya 5 authentication ruby-on-rails devise warden

warden.authenticate!(auth_options)

working fine for these params:

{"utf8"=>"?", "authenticity_token"=>"5BMAUoZLUEgPZBVOAcQ8lFD4+pumP9kEvvXyelbnjeO36AZJQt2oRlraicQ6quvh/dccS0ELUkxjACgFcWFYAg==", "user"=>{"email"=>"vijay@xyz.com", "password"=>"xyz", "phone"=>"9443429932"}, "action"=>"create", "controller"=>"sessions", "format"=>"json", "session"=>{"user"=>{"email"=>"vijay@xyz.com", "password"=>"xyz", "phone"=>"9443429932"}}}

but failing for these:

{"utf8"=>"?", "authenticity_token"=>"/ly2phwfsD3HEVkHK39ajYQGv6R4uj2z3B+3eiZEU0qtp7C92IlIM5KvxY0QEY34KSlZdJ+OtvsB6m0FAcKGqw==", "user"=>{"phone"=>"9443429932", "password"=>"xyz", "email"=>"vijay@xyz.com"}, "action"=>"create", "controller"=>"sessions", "format"=>"json", "session"=>{"user"=>{"phone"=>"9443429932", "password"=>"xyz", "email"=>"vijay@xyz.com"}}}

The data is the same in both cases except for the order. Stuck with this for long.

here is the log:

在2017-04-10 10:53:07 +0530由SessionsController#create作为JSON
参数开始为127.0.0.1启动POST“ /users/sign_in.json” = {“ utf8” =>“?”,“ authenticity_token” = >“ XVMbYLTgv4eFbv9pX5lJD3U6DHF17o18rVIjqQLo4skOqB17cHZHidDQY + Nk95562BXqoZLaBjRwp / nWJW43KA ==”,“ user” => {“ phone =” =>“”>“>”“”“” “ phone” =>“ 9443429932”,“ password” =>“ [已过滤]”}}}用户负载(0.3毫秒)SELECT users。* FROM usersWHERE usersid= 12422916 AND(invitation_token为空)LIMIT 1已完成401未经授权(15毫秒)

Sur*_*rya 5

发现问题。典狱长正在从 request.params 读取参数我已经编辑了参数,但它没有反映在 request.params 中。

request.params[:user].merge!(params[:user])

这解决了这个问题。