gpt4 book ai didi

ruby-on-rails - 加载该 session 的力如何?

转载 作者:行者123 更新时间:2023-12-03 15:17:44 25 4
gpt4 key购买 nike

我正在开发一个需要使用 session ID 信息的应用程序。我的 session 存储在 cookie 中。我遇到的问题是,当用户第一次访问该站点时, Controller 无法立即使用我的 session 。我想我可能遗漏了一些关于如何在 Rails 中初始化 session 的信息。但我对 session 未加载这一事实持肯定态度,因为这是 session.inspect 的输出。 :

#<Rack::Session::Abstract::SessionHash:0x15cb970 not yet loaded>

以下是如何重现 Rails 3.2.11 的问题和 ruby 1.9.3 :

使用 test 创建一个新应用程序 Controller :
rails new my_app
cd my_app/
rails g controller test
rm app/assets/javascripts/test.js.coffee
touch app/views/test/index.html.erb

尝试在该 Controller 中获取 session ID:
class TestController < ApplicationController
def index
puts session[:session_id]
puts session.inspect
end
end

添加所需的路线:
MyApp::Application.routes.draw do
resources :test
end

然后访问应用程序并查看它的作用:
rails server

到达: http://localhost:3000/test
这是控制台中的输出:
#<Rack::Session::Abstract::SessionHash:0x3fd10f50eea0 not yet loaded>

再说一次 http://localhost:3000/test这次我们有一个 session :
400706c0b3d95a5a1e56521e455075ac
{"session_id"=>"400706c0b3d95a5a1e56521e455075ac", "_csrf_token"=>"Euaign8Ptpj/o/8/ucBFMgxGtiH7goKxkxeGctumyGQ="}

最佳答案

我同意@joscas 的回答,但我不会写一个值,而是将其删除,以免有冗余数据。

class MyController < ApplicationController
protect_from_forgery
def index
session.delete 'init'
do_stuff
end
end

session 也以这种方式加载。

注:确保您没有在应用程序中使用要删除的 key 。

关于ruby-on-rails - 加载该 session 的力如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14665275/

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