0

尝试将JQuery 小部件(尤其是JQGrid)与 Rails 3 应用程序一起使用。我正在使用 ruby​​-openid 与 Google 进行身份验证,并使用了Seth Ladd 的好方法来使其正常工作。

它的作用——用于网页表单的页面视图和帖子。

但是,每当 JQGrid 执行 POST 以更新服务器上的数据时,都会发生两件事:

  1. 即使用户的浏览器已经通过登录 Google 进行了身份验证,POST 对服务器来说似乎是来自未经身份验证的,并被重定向到 OpenID 身份验证舞蹈。除了

  2. 一旦服务器发回应该启动重定向和身份验证的 401,整个辣酱玉米饼馅就停止了。通常(例如,来自表单提交的 POST 请求),浏览器会看到 401,读取随附的“在此处进行身份验证”信息,然后跳舞,返回会话设置,然后循环继续。但是从 JQuery/JQGrid ......不是那么多。

有任何想法吗?我确信我在这里遗漏了一些明显的东西,但是我有一个拉姆斯菲尔德的“未知未知数”,我不知道我遗漏了什么,更不用说如何解决它了!看起来这应该是一个长期解决的问题,嗯?

我可能会与 XSS 防御发生冲突,但如果是这样,我不知道除了* *-canning 我们已经在 OpenID 上进行的重大投资(包括已经注册和必须提供/记住密码的用户)之外的其他方法 - - 哎呀!)。

提前感谢我的专家同事。

(Rails 3.0.7、ruby-openid 2.1.8、JQGrid 3.5.3、JQuery 1.3.2,使用 Google 作为 OP,这样用户就不必输入他们的身份 URL。)

4

1 回答 1

0

好的,进一步的测试证实这是一个包装,女士们和先生们。

当然,我必须弄清楚如何让 Javascript 与protect_from_forgery 一起工作,但事实证明这真的很容易,您只需获取真实性令牌并将其包含在所有Ajax 请求中,详见http://henrik.nyh。 se/2008/05/rails-authenticity-token-with-jquery。非常巧妙,因为这种技术会自动将令牌构建到所有内容中,因此您不必寻找所有 POST 请求。

奥列格,谢谢你的帮助。我会听取你的建议。

还要感谢OpenID 代码邮件列表上的 Sante,他给了我指向 protect_from_forgery 标头内容的指针。

于 2012-05-30T22:16:59.267 回答