Tôi đang sử dụng Rails 3.1.0.rc4 và tôi đang làm việc để thực hiện các kiểm tra tích hợp với DSL mới giống như của Capybara và Rspec (sử dụng xác thực Devise)Đường ray - Mất phiên với Kiểm tra tích hợp và Capybara - CSRF có liên quan?
Vấn đề tôi gặp phải là khi tôi chạy một thử nghiệm tích hợp, trình điều khiển rack-test từ capybara dường như chỉ mất hoàn toàn phiên đăng nhập của người dùng, trên thực tế, phiên dường như chỉ rõ ràng hoàn toàn.
Sau những ngày gỡ lỗi, tôi hoàn toàn mất đi lý do tại sao. Sắp xếp từng dòng thông qua ngăn xếp phần mềm trung gian, tôi tin rằng tôi đã loại trừ sự cố xảy ra trong một số ActiveRecord::SessionStore
đang gây ra vấn đề này. Tôi đã đọc here rằng Rails sẽ xóa một phiên nếu nó không thể xác thực mã thông báo CSRF, điều này khiến tôi tin rằng tôi đã có cấu hình sai và vì lý do nào đó, kiểm tra này không xác thực mã thông báo CSRF chính xác .
Đây là những gì có trong session_store.rb tôi trong thư mục/initializers:
MyApp::Application.config.session_store :active_record_store
Có ai người hiểu biết về bảo vệ CSRF trong đường ray có bất kỳ dẫn trên tại sao điều này có thể xảy ra?
Ngoài ra, đây là một số điều cần lưu ý:
- điều tôi đang cố gắng để kiểm tra thực sự hoạt động trong trình duyệt riêng của mình, chỉ có một bài kiểm tra này bị giảm phiên
- phiên dường như để có được giảm sau khi gửi biểu mẫu mà url hành động đến một máy chủ khác. Tôi đang sử dụng đá quý VCR để nắm bắt các yêu cầu/phản hồi cho máy chủ bên ngoài này trong thử nghiệm và trong khi tôi tin rằng tôi đã loại trừ yêu cầu bên ngoài là vấn đề, điều này có thể có liên quan trực tiếp đến mã thông báo CSRF không xác thực, do đó xóa phiên.
- xét nghiệm khác liên quan đến việc đăng nhập/sử dụng phiên không bỏ buổi
bất cứ ai có thể cho tôi bất kỳ dẫn như những gì đang xảy ra ở đây chính xác, và lý do tại sao một trong những thử nghiệm chỉ có vẻ tự ý thả phiên và thất bại về tôi? Tôi đã thực hiện rất nhiều gỡ lỗi và đã thử mọi thứ tôi có thể nghĩ đến.
Có sự cố tương tự ... argh ... – Lichtamberg