2012-04-18 2 views
2

내가 다음 단계와 오이 시나리오가 있습니다분실 세션/오이/카피 바라

Given /^I have logged in$/ do 
    visit root_url 
    fill_in 'username', with: 'testuser' 
    fill_in 'password', with: 'testpass' 
    click_button 'Log In' 
end 

내 시나리오 & 꼬리를 실행하면 내 레일 로그, 내가 확인할 수 있습니다 1) 로그인 페이지가로드 즉, 2) 로그인 세부 사항이 제출 될 때, 그것들은 받아 들여지고 필요한 사용자 정보는 Rails의 session 객체에 올바르게 저장되고, 3) 로그인 후 페이지로의 302 리다이렉션 (따라서 403)에 이어 세션 데이터가 손실된다. :

Started GET "/" for 127.0.0.1 at 2012-04-18 16:09:41 +0100 
    Processing by HomeController#index as HTML 
Rendered home/index.html.erb within layouts/application (4.6ms) 
Completed 200 OK in 9ms (Views: 8.3ms) 


Started POST "/" for 127.0.0.1 at 2012-04-18 16:09:41 +0100 
    Processing by HomeController#index as HTML 
    Parameters: {"utf8"=>"✓", "is_submitted"=>"true", "username"=>"testuser", "password"=>"[FILTERED]", "commit"=>"Log In"} 
DEBUG - login success 
DEBUG - session: {"UserId"=>"19fd75c8-0e80-4832-94af-6a93ee74bf46", "Username"=>"testuser", "Password"=>"d68579bfdac2321d05f19042d8dbc49b9dd611c8", "Name"=>"Active User", "Active"=>true} 
Redirected to http://www.example.com/app 
Completed 302 Found in 3ms 


Started GET "/app" for 127.0.0.1 at 2012-04-18 16:09:41 +0100 
    Processing by HomeController#app as HTML 
DEBUG - session: {} 
Redirected to http://www.example.com/ 
Completed 403 Forbidden in 1ms 

세 번째 요청에서 세션 객체는 비어 있습니다 (마지막 액션에서 제대로 설정되었음을 알지만). 세션 데이터는 리디렉션 후에도 여러 요청에 걸쳐 지속되지 않지만 그 이유를 파악할 수없는 것으로 보입니다 (몇 시간을 소비했습니다!). 어떤 아이디어? 내 응용 프로그램 컨트롤러에서 인증 로직은이 작업을 수행 (user 해시는 NB), 그것은 하지 작업을 수행하는 경우

+0

세션이 저장된 위치를 확인해야합니다. 쿠키 또는 데이터베이스. session_store.rb 파일을 참조하십시오. –

+0

쿠키 저장소를 사용 중입니다. (나는 로그인/세션 물건이 "진짜 브라우저"에서 절대적으로 잘 작동한다고 언급해야한다.) – skinnyfit

답변

1

그래서 여기 ... batshit 하나 :

session.merge! user 

그러나이

session['UserId'] = user['UserId'] 
session.merge! user 

사실,이 또한 작동합니다 : 작업을 수행

session[:make_sessions_work_in_capybara_ffs] = true 
session.merge! user 

그래서 세션에 키 (모든 키)를 설정하면 어떻게 든 Capybara가 세션 쿠키를 인식/유지하게됩니다. 몇 가지 이유.

+0

이 간단한 것은 작동하지 않는다. http://stackoverflow.com/questions/6605364/rails-losing-session-with-integration-tests-and-capybara-csrf-related – san983

+0

다른 문제가 있습니다. 나는 내 문제를 해결했기 때문에 대답을 올렸다. – skinnyfit

+0

사용자 개체를 세션에 저장하면 안됩니다. 특히 암호가 아닙니다. – Edmund