2010-09-02 21 views
6

Bir kullanıcı etki alanımı ziyaret ettiğinde, oturum yöneticisi django tarafından verilir. Facebook ile Oauth yapmayı denediğinde, sitemde Facebook.com'a yönlendiren bir düğmeyi tıkladı. Facebook alanımıma yeniden yönlendiriyor, ancak bu noktada kullanıcının oturumu kayboluyor ve Django yeni bir oturum değişkeni yayınlıyor gibi görünüyor.Django Oturumları başka bir etki alanından yeniden yönlendirildiğinde düşüyor

Bırakılan oturumun devam etmesini istiyorum çünkü ziyaretçiyi Facebook hesabıyla siteme ilişkilendirmeliyim, ancak oturum bırakıldığında, oturum açmış olan kullanıcı oturumu kapattı.

Bunun django XSS koruması ile ilgili davranışlar olabileceğine dair bir şüphem var. Kullanıcı, sitemizi Facebook'ta giriş yapmak için siteden ayrıldığında kullanıcı bilgilerini nasıl kalıcı hale getiririm?

+0

Sorununuzun http://docs.djangoproject.com/en/1.2/topics/http/sessions/#browser-length-sessions-vs-persistent-sessions ile ilgisi var mı? Ayrıca, oturumun düştüğünü tanımlayın. 'Kullanıcı' hala çerezini kullanıyor mu? – cpf

+0

Oturum bırakıldığında, orijinal oturum kimliği bilgisinin silinip yenisiyle değiştirilmesi anlamına gelir. Bağlantı için teşekkür ederiz, kullanıcı yeni bir siteyi ziyaret ettiğinde ve orijinal alana geri döndüğünde oturumların silinmemesi gerektiğini gösterir. – Mark

cevap

9

Oluşturulduğunda, çerezlerin aynı etki alanına sahip olduğunu doğrulamak isteyebilirsiniz. Bu bazen sorunlara neden olabilir. Www.example.com web sitesine ve ornek.com'a giden OAuth geri arama noktalarına gidecekseniz, www.example.com için bir tane ve example.com için bir tane olmak üzere iki ayrı çereziniz olabilir.

Açın Tarayıcınızda "Her Zaman Sor" ve çerez ayrıntılarına dikkat edin. "Host:" alanının değerinin her ikisinin de aynı olduğundan emin olun.

Düzeltme, SESSION_COOKIE_DOMAIN için .example.com gibi bir şey girerek settings.py dosyanıza.

+0

Önerinizi denedim ve sorun çözülmüş gibi görünüyor, teşekkürler! – Mark

+0

Bunun için 2 saat x_x gibi sıkışmış oldum. Çözüm için teşekkürler! – Weaver

+2

Bu bana oluyordu, çünkü 'localhost' üzerinde başlıyordum ve daha sonra 127.0.0.1'de geri geliyordum. – Seth

2

Ayrıca, aynı etki alanında çalışan iki Django uygulamanız varsa, çerez çarpışmasından kaçınmak için SESSION_COOKIE_NAME öğesini her biri için farklı şekilde ayarlamak isteyebileceğinizi keşfettim.

İlgili konular