在warden json参数不起作用

时间:2013-11-26 05:53:14

标签: ruby-on-rails json warden

我正在使用rails json webservices。我正在使用warden进行身份验证,它使用html格式工作正常,但在json中它不起作用。因为传递参数在config / intializers / wrden.rb文件中不起作用。下面是代码

配置/ intializers /区长。 rb

def authenticate!

  Rails.logger.info '!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
  Rails.logger.info params['emailID']
  user = User.find_by_emailID(params['emailID'])
  if user && user.authenticate(params['password'])
    success! user
  else
    fail "Invalid email or password"
  end

end

此处是此

的日志
Parameters: {"emailID"=>"xyz@gmail.com", "password"=>"123456", "session"=>{"emailID"=>"xyz@gmail.com", "password"=>"123456"}}

(0.2ms)  BEGIN

!!!!!!!!!!!!!!!!!!!!!!!!!!!!

nil

User Load (12.2ms)  SELECT "users".* FROM "users" WHERE "users"."emailID" IS **NULL** LIMIT 1

(0.3ms)  COMMIT

Completed   in 276ms

1 个答案:

答案 0 :(得分:1)

嗯,我也遇到了这个问题。这个GitHub线程为我修复了它:

https://github.com/hassox/warden/issues/84

基本上,告诉Warden使用Rails'请求对象而不是默认情况下使用的任何对象。您可以使用rails-warden gem或将其混合到Warden中:

module Warden::Mixins::Common
    def request
      @request ||= ActionDispatch::Request.new(@env)
    end
end