我正在尝试使用HTTP POST在我的Cocoa应用程序的Ruby on Rails应用程序中创建模型实例。我正在编写客户端(Cocoa)和服务器(Rails),因此我可以在任一位置进行更改。
我遇到使用Protect For Forgery时需要的身份验证令牌的问题
当我可以将HTTP POST的Content-Type设置为text / xml时,一切正常,因为Rails将此路由器路由到不需要身份验证令牌的相应xml处理程序。模型对象被创建,链接在一起并正确存储。甜。
我现在正在尝试将文件上传到服务器。这需要我使用multipart / form-data Content-type。此连接失败,因为我验证令牌未验证。因为我没有发送xml POST,所以我需要进行身份验证。但是,我在桌面客户端上,无法在rails中使用漂亮的表单助手。
解决这个问题的方法是什么?
我的文件上传HTTP POST在我关闭Protect For Forgery时工作正常,但这不是一个理想的解决方案。
谢谢, 杰夫
答案 0 :(得分:0)
解决此问题的一种方法是在控制器中为此特定上传创建单独的操作。然后,您可以在该控制器中声明以下内容。
skip_before_filter :verify_authenticity_token, :only => :my_special_action
当然,这会将此上传操作公开给远程帖子提交。但你正试图这样做,不是吗?远程提交的东西。因此,您无法保护远程提交并同时使用它。我可以通过几种方式看到它。
P.S。另一种方法是,如果您的网站有帐户,则需要对此操作进行基本身份验证。
答案 1 :(得分:0)
只是一个小小的解决方案,它可能适用于您的情况:
skip_before_filter :verify_authenticity_token, :only => :get_auth_token
生成令牌
然后通过XML调用发送回您的应用
然后将该令牌用于将来的引用。