2012-04-18 16 views
2
とのセッション

をロスト:は、私は次のステップとキュウリのシナリオを持っているのRails /キュウリ/カピバラ

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

私は私のシナリオ&尾を実行した場合、私のRailsは、私は1)ログインページが読み込まことを確認することができ、ログ2)ログインの詳細が提出されると、それらは受け入れられ、必要なユーザ情報はRailsのsessionオブジェクトに正しく格納されます.3)ログイン後のページ(したがって403)への302リダイレクト後にセッションデータが失われます。 :

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 

ご覧のとおり3番目のリクエストでは、セッションオブジェクトは空です(最後のアクションで正しく設定されていることはわかっていますが)。セッションデータはリダイレクト後のリクエスト間で永続化されないようですが、理由を把握できません(時間がかかりました!)。何か案は?

+0

セッションが保存されている場所を確認する必要があります。クッキーまたはデータベース内。 session_store.rbファイルを参照してください。 –

+0

これはCookieストアを使用しています。 (私は、ログイン/セッションのものは "実際のブラウザ"で絶対にうまく動作することを言及する必要があります。) – skinnyfit

答えて

1

だからここに私のアプリケーションのコントローラで認証ロジックは、(NB userがハッシュである)、これを行う場合、それは仕事...ない... batshit一つだ:

session.merge! user 

しかし、これを

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

実際には、これも動作します::作業を行い

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

セッションにキー(任意のキー)を設定すると、何とかしてCapybaraがセッションCookieを認識/永続化するように見えます。何らかの理由で。

+0

この単純な動作しません。 http://stackoverflow.com/questions/6605364/rails-losing-session-with-integration-tests-and-capybara-csrf-related – san983

+0

これはまったく別の問題です。私は自分の問題を解決したので私の答えを掲載しました。 – skinnyfit

+0

セッションにユーザーオブジェクトを格納すべきではありません。特にパスワードはありません – Edmund

関連する問題