2010-11-23 13 views

答えて

43

ちょうどセッションを破壊する

session.clear 

を使用しています。

+0

OPの例では、SinatraなどのRubyフレームワークを使用していることが明確です( 'enable:sessions')。しかし、' Rack :: Session :: Cookie'を直接使ってセッションを削除することを尋ねました。この回答に記載されている解決策はそれに当てはまるのですか、Sinatra/Rails固有の解決策ですか? http://stackoverflow.com/questions/10451392/how-do-i-set-get-session-vars-in-a-rack-appによると '#session'はSinatra/Rails /に固有のメソッドです。プレーンラックアプリケーションにはそれがありません。これが本当であれば、これに対処するための正しいラックのみの方法が何であるかを知っている人はいますか? –

+0

私のために働いていない、それを数回試してみました。私は 'enable:sessions'を使って非常に簡単なアプリケーションを持っています –

+0

@jj_いいえ、' sinatra'と 'rails'はラックミドルウェアを使いません。 –

3

セッションの作成方法によって異なります。単にセッションエントリをヌル化する必要があります。ここでは、セッションの作成と破棄の簡単な例を示します。

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

+2

ええと、私はそれを試みましたが、私が "ログアウト"した後もラック・セッション・クッキーはまだ存在しています。 – ecoffey

+0

@ecoffeyあなたは確かに同じクッキーですか? 'session.clear'を使用すると新しいセッションになる可能性がありますが、古いセッションは破棄されます。セッションキーが無ければ元のクッキーは保持されますが、値はありません。 – xentek

関連する問題