我正在使用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
答案 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