2008-09-09 12 views
13

:Rails'deki wild card çerezlerini nasıl silersiniz? Eğer bir joker etki alanıyla kuruldu raylar bir çerez silerim nasıl

cookies[:foo] = {:value => 'bar', :domain => '.acme.com'} 

zaman docs aşağıdaki yapmanız:

cookies.delete :foo 

günlükleri

Cookie set: foo=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT 
demek

Etki alanının eksik olduğuna dikkat edin (her şey için varsayılan params gibi görünüyor). RFC saygı, elbette kurabiye hala orada, Tarayıcı ->ctrl/cmd - L ->

javascript:alert(document.cookie); 

Voilà!

S: Böyle bir çerezi silmenin "doğru" yolu nedir?

+0

Thx! Bu bir cazibe gibi çalışır ... Ayrıca http://api.rubyonrails.org/classes/ActionController/Cookies.html "docs" bağlantısını eklemeyi denedim ama bu başarısız olabilir – Purfideas

cevap

20

Etki alanı üzerinde de silin. İşte o yöntemin kaynağıdır:

# Removes the cookie on the client machine by setting the value to an empty string 
# and setting its expiration date into the past. Like []=, you can pass in an options 
# hash to delete cookies with extra data such as a +path+. 
def delete(name, options = {}) 
    options.stringify_keys! 
    set_cookie(options.merge("name" => name.to_s, "value" => "", "expires" => Time.at(0))) 
end 

Gördüğünüz gibi, sadece 1969 yılında sona erecek Verdiğin adı, boş bir çerez ve hiçbir içeriği ile. Ancak, verdiğiniz diğer seçeneklerde birleşir, bu nedenle aşağıdakileri yapabilirsiniz:

cookies.delete :foo, :domain => '.acme.com' 

Ve ayarlandıysanız.

İlgili konular