我正在尝试在我的rails应用程序中使用Warden进行身份验证。如果我通过POST请求以常规形式使用它,它工作得很好。但是当我将它移动到Backbone.js时,我发现了身份验证!方法总是调用我失败的应用程序。
我在authenticate里面放了一些日志!方法,并发现params hash为空。就像这样:
def authenticate!
Rails.logger.debug "Parameters inside of Warden: #{params}"
user = User.find_by_email(params['email'])
if user && user.authenticate(params['password'])
success! user
else
fail "Invalid email #{request.params['email']} or password #{request.params['password']}!"
end
end它生成一个空输出:Warden中的参数:{}
同时,我可以在控制器中看到env‘’warden‘之前的params。.authenticate!是调用的。我只能猜测我的参数去哪里了。我做错了什么?
发布于 2012-06-15 06:17:42
我是Rails的新手,所以我的解决方案可能很简单。但由于我没有找到任何与它相关的东西,它可能对某些人有用。
重点是Warden实例化Rack::请求以获得对params散列的访问。它只支持'application/x-www-form-urlencoded‘和'multipart/form-data’。http://rack.rubyforge.org/doc/classes/Rack/Request.html#M000275
可能在控制器中使用了不同的解析器,这就是我感到困惑的原因。最后,我用基于机架的外部解析器https://github.com/achiu/rack-parser修复了这个问题
https://stackoverflow.com/questions/11035011
复制相似问题