我感觉我在这里漏掉了什么显而易见的东西,希望一旦我发布这个问题,有人能用我所错过的谷歌搜索链接来羞辱我。
enable :sessions
get '/logout' do
# What goes here to kill the session?
end
只需使用
session.clear
销毁会话。
这取决于您如何创建会话。简单来说,您必须将会话条目设置为null。下面是一个简单的示例,演示如何创建和销毁会话。
get '/login' do
session[:username] = params[:username]
"logged in as #{session[:username]}"
end
get '/logout' do
old_user = session[:username]
session[:username] = nil
"logged out #{old_user}"
end
session.clear
,它很可能会是一个新的会话,但旧会话将被销毁。将会话键设置为 nil 可能会保留原始 cookie,但不包含任何值。 - xentek
enable :sessions
),他们正在使用 Sinatra 或类似的 Ruby 框架,但他们询问如何直接使用Rack::Session::Cookie
删除会话。这个答案提供的解决方案适用于此吗,还是只适用于 Sinatra/Rails?根据 https://dev59.com/8Wkv5IYBdhLWcg3wpCXJ 的说法,#session
是 Sinatra/Rails/... 特有的方法,普通的 rack 应用程序没有它。如果这是真的,那么有人知道正确的仅限于 rack 的处理方式吗? - Redomanenable :sessions
。 - Ohad Perrysinatra
和rails
使用rack中间件。 - Jonas Fagundes