Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActionController::InvalidAuthenticationToken,使用OpenID登录后_Ruby On Rails_Ruby On Rails 4_Xmlhttprequest_Openid_Csrf - Fatal编程技术网

Ruby on rails ActionController::InvalidAuthenticationToken,使用OpenID登录后

Ruby on rails ActionController::InvalidAuthenticationToken,使用OpenID登录后,ruby-on-rails,ruby-on-rails-4,xmlhttprequest,openid,csrf,Ruby On Rails,Ruby On Rails 4,Xmlhttprequest,Openid,Csrf,使用Rails 4和ruby 2.1.2 我需要实现一些信息页面,但其中一个页面中有一个表单。只有当表单是提交时,身份验证才会生效。只需要一种身份验证方法:OpenID,以及一个现有的提供者 我做了一个简单的原型,然后我被重定向到OpenID提供者登录。但是,当返回时,我得到了InvalidAuthenticationToken错误 例如,阅读以下问题: 我怀疑这与重定向有关。我实际上提交了表单,但首先被重定向到OpenID提供者,然后返回表单的POST-action URL。在这些重定向上,我

使用Rails 4和ruby 2.1.2

我需要实现一些信息页面,但其中一个页面中有一个表单。只有当表单是提交时,身份验证才会生效。只需要一种身份验证方法:OpenID,以及一个现有的提供者

我做了一个简单的原型,然后我被重定向到OpenID提供者登录。但是,当返回时,我得到了InvalidAuthenticationToken错误

例如,阅读以下问题: 我怀疑这与重定向有关。我实际上提交了表单,但首先被重定向到OpenID提供者,然后返回表单的POST-action URL。在这些重定向上,我猜我在表单中构建的表单令牌(form_for)丢失了

我怎样才能正确地做到这一点? 我的下一次尝试可能是捕获提交事件,对OpenID身份验证执行XHR请求,并且只有在从那里回来之后,我才真正提交表单。但我预见到了这里的麻烦,对于一个有效的OpenID登录,我可能需要打开一个新窗口才能有效地执行重定向,我不知道如何在这个过程中不迷路……;)

这是我到目前为止所拥有的(嘿,这是一个原型,我刚刚使用了
url:sites\u path
作为表单的选项,从而转到
/sites
url,映射到
create
;)

类站点控制器
@MichalSzyndel不,我不知道。我考虑过了,但因为我真的只需要OpenID,所以我觉得这太过分了。我使用Ruby OpenID和OpenAIDIAudioToCutoK,然后我不能帮助。如果你有一个使用设计的建议,我可能会考虑……一个比一个非工作的工具更有效的工作解决方案。我没有你使用的宝石的经验,也不能保证使用Desive会解决你的问题。
class SitesController < ApplicationController

  @@openid_url_base  = "myprovider.org"
  def create    
    openid_url = @@openid_url_base + login
    openid_authentication(openid_url)
  end