【发布时间】:2011-04-12 18:20:39
【问题描述】:
我在 Rails 3.0.5 中使用 Authlogic 2.1.6 进行授权,但 AJAX 请求存在会话 cookie 问题。
在 POST 或 PUT AJAX 调用之后,我收到了 401 响应和新的会话密钥。之后,每次调用都会返回 401 响应。在 POST 或 PUT 调用之前,每个 GET 调用都会成功。
这不会在测试模式下发生,只会在开发和生产模式下发生。
有人知道如何避免这种情况吗?
编辑:我认为伪造保护真实性密钥存在问题,因为在禁用伪造保护后一切正常。
这是一个将产生 401 的请求标头:
Accept:*/* Cache-Control:max-age=0 Content-Type:application/json; charset=UTF-8 Origin:http://localhost:3000 Referer:http://localhost:3000/ User-Agent:Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; de-de) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4 X-Requested-With:XMLHttpRequest
Rails 日志条目如下:
Started POST "/users.json" for 127.0.0.1 at Tue Apr 12 10:47:33 +0200 2011 Processing by UsersController#create as JSON Parameters: {"user"=>{"password_confirmation"=>"[FILTERED]", "group_id"=>2, "lastname"=>"test1", "prename"=>"test1", "password"=>"[FILTERED]", "login"=>"test1"}} Rendered text template (0.0ms) Completed 401 Unauthorized in 19ms (Views: 0.9ms | ActiveRecord: 3.0ms)
编辑2:
下一个奇怪的事情:我发送一个 BASIC AUTH Header 而不是带有会话 ID 的 cookie,我没有收到 401,很奇怪
【问题讨论】:
-
您是否在 POST 或 PUT 之后检查您的会话是否发生了变化?我们需要更多信息来帮助您喜欢日志。
-
添加了日志条目和请求头
标签: ruby-on-rails ruby ajax session authlogic