gpt4 book ai didi

ruby - 失去与 Rails/Cucumber/Capybara 的 session

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:19 25 4
gpt4 key购买 nike

我有一个包含以下步骤的 Cucumber 场景:

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) session 数据在 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

如您在第三个请求中所见, session 对象为空(即使我们知道它在上一个操作中已正确设置)。似乎 session 数据在重定向后不会跨请求持久保存,但我不明白为什么(我已经花了几个小时!)。有什么想法吗?

最佳答案

所以这是一个糟糕的事情......如果我的应用程序 Controller 中的身份验证逻辑执行此操作(n.b. user 是一个散列),它不会工作.. .:

session.merge! user

但这确实有效:

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

其实这样也行:

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

所以似乎在 session 上设置一个 key (任何 key )以某种方式使 capybara 识别/保留 session cookie。出于某种原因。

关于ruby - 失去与 Rails/Cucumber/Capybara 的 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com