尝试使用JQuery widgets - 实际上JQGrid,特别是使用Rails 3应用程序。我正在使用ruby-openid对Google进行身份验证,并使用Seth Ladd's nice recipe来实现这一点。
它的作用 - 用于网页表单的页面浏览和POSTS。
但是,每当JQGrid执行POST以更新服务器上的数据时,就会发生两件事:
即使用户的浏览器已经通过登录Google进行了身份验证,POST也会向服务器显示来自未经身份验证的POST,并被重定向到OpenID身份验证舞蹈。除了
一旦服务器发回401应该启动重定向和验证的东西,整个辣酱玉米饼馅就会停止死亡。通常(例如,来自表单提交的POST请求),浏览器会看到401,读取随附的“在此处进行身份验证”信息,跳舞,返回会话设置,循环继续。但是来自JQuery / JQGrid ......不是那么多。
有什么想法吗?我有信心我在这里遗漏了一些明显的东西,但我有一个拉姆斯菲尔德的“未知的未知数”,我不知道我错过了什么,更不用说如何解决它了!看起来这应该是一个长期解决的问题,嗯?
我可能会违反XSS防御措施,但如果是这样的话,我不知道除了 * *之外的其他方式 - 我们已经在OpenID中进行了严肃的投资(包括用户已经在内)注册并且必须提供/记住密码 - ick!)。
先谢谢我的专家同事。
(Rails 3.0.7,ruby-openid 2.1.8,JQGrid 3.5.3,JQuery 1.3.2,使用Google作为OP,这样用户就不必输入他们的身份URL。)
答案 0 :(得分:0)
好的,进一步的测试证实那是一个包装,女士和男士。
当然,我必须弄清楚如何让Javascript与protect_from_forgery一起工作,但事实证明这很简单,你只需获取真实性令牌并将其包含在所有Ajax请求中,详见http://henrik.nyh.se/2008/05/rails-authenticity-token-with-jquery 。非常光滑,因为这种技术可以自动将令牌构建到所有内容中,所以您不必搜索所有POST请求。
Oleg,谢谢你的帮助。我会接受你的建议。
还要感谢OpenID Code邮件列表上的Sante,他给了我指向protect_from_forgery标题内容的指针。