【问题标题】:Deleting the current session with Rack::Session::Cookie使用 Rack::Session::Cookie 删除当前会话
【发布时间】:2011-05-14 06:14:48
【问题描述】:

我觉得我在这里遗漏了一些明显的东西,我希望一旦我发布此内容,有人会用我遗漏的谷歌搜索链接让我感到羞耻:-)

enable :sessions

get '/logout' do
  # What goes here to kill the session?
end

【问题讨论】:

    标签: ruby session sinatra rack


    【解决方案1】:

    随便用

    session.clear
    

    销毁会话。

    【讨论】:

    • 从 OP 示例中可以清楚地看出 (enable :sessions) 他们正在使用 Sinatra 或类似的 ruby​​ 框架,但他们询问是否直接使用 Rack::Session::Cookie 删除会话。此答案中提供的解决方案是否适用于此,还是 Sinatra/Rails 特定?根据stackoverflow.com/questions/10451392/…#session 是特定于 Sinatra/Rails/... 的方法,而普通机架应用程序没有它。如果这是真的,那么有没有人知道正确的机架式处理方法是什么?
    • 不适合我,试了几次。我有一个非常简单的应用程序,使用 enable :sessions
    • @jj_ 不,sinatrarails 使用机架中间件。
    【解决方案2】:

    这取决于您如何创建会话。只需您必须取消会话条目。这是一个简单的例子,如何创建和销毁会话。

      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
    

    你也可以看看这个例子:https://gist.github.com/131401

    【讨论】:

    • 嗯,我试过了,但是我“注销”后 rack.session cookie 仍然存在。
    • @ecoffey 你确定它是同一个cookie吗?如果您使用session.clear,它可能是一个新会话,但旧会话将被销毁。 Nil-ing 会话密钥可能会保留原始 cookie,但没有任何值。
    猜你喜欢
    • 2012-11-14
    • 2013-06-25
    • 1970-01-01
    • 2013-09-06
    • 2016-03-06
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 2013-09-12
    相关资源
    最近更新 更多